Skip to content

Commit

Permalink
add fonts methods
Browse files Browse the repository at this point in the history
Fixes #334
  • Loading branch information
andymeneely committed Jul 22, 2021
1 parent 971bb82 commit d92aab4
Show file tree
Hide file tree
Showing 8 changed files with 78 additions and 3 deletions.
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
# Squib CHANGELOG
Squib follows [semantic versioning](http://semver.org).

## v0.16.1 / Unreleased
## v0.16.1 / 2021-07-22

Features:
* Added debug methods for checking font access. `Squib.system_fonts` and `Squib.print_system_fonts` (#334)

Bugs:
* The `rows` argument is always respected in `save_sheet` (#332).
Expand Down
2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
# The short X.Y version.
version = u'v0.16'
# The full version, including alpha/beta/rc tags.
release = u'v0.16.0'
release = u'v0.16.1'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
20 changes: 20 additions & 0 deletions docs/dsl/print_system_fonts.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
print_system_fonts
==================

Returns an array of font names that Squib knows about. These are what Squib considers "system" fonts. For debugging purposes.

This is a module function, so it can be called anywhere with ``Squib.print_system_fonts``


Options
-------

None.


Examples
--------

.. literalinclude:: ../../samples/system_font_debug/_list_fonts.rb
:language: ruby
:linenos:
19 changes: 19 additions & 0 deletions docs/dsl/system_fonts.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
system_fonts
============

Returns an array of font names that Squib knows about. These are what Squib considers "system" fonts. For debugging purposes.

This is a module function, so it can be called anywhere with ``Squib.system_fonts``

Options
-------

None.


Examples
--------

.. literalinclude:: ../../samples/system_font_debug/_list_fonts.rb
:language: ruby
:linenos:
2 changes: 2 additions & 0 deletions lib/squib.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
require_relative 'squib/commands/cli'
require_relative 'squib/deck'
require_relative 'squib/card'
require_relative 'squib/system_fonts'


module Squib
using Rainbow # we can colorize strings now!
Expand Down
17 changes: 17 additions & 0 deletions lib/squib/system_fonts.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
require 'pango'
module Squib

# List all system fonts that Cairo/Pango can see
# Wow this call was convoluted...
# Returns array of strings with the names of fonts
module_function def system_fonts
cc = Cairo::Context.new(Cairo::ImageSurface.new(0,0)) # empty image
cc.create_pango_layout.context.families.map {|f| f.name }
end

# Prints out the system fonts in sorted order
module_function def print_system_fonts
puts "== DEBUG: Squib knows about these fonts =="
puts system_fonts.sort
end
end
2 changes: 1 addition & 1 deletion lib/squib/version.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ module Squib
# Most of the time this is in the alpha of the next release.
# e.g. v0.0.5a is on its way to becoming v0.0.5
#
VERSION = '0.17.0a'
VERSION = '0.16.1'
end

14 changes: 14 additions & 0 deletions samples/system_font_debug/_list_fonts.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# require 'squib'
require_relative '../../lib/squib'

# Per issue #334, sometimes Pango doesn't find the font file you want
# Pango requires fonts to be installed on the system, but sometimes the
# font name is not obvious. e.g. "Foo Regular" might be actually named "Foo"
# Use these methods to debug this problem

# Usually you would just run this method to see what fonts are installed
# This is commented out to make our test cases
# Squib.print_system_fonts

Squib.system_fonts.include? 'Open Sans' # checks if we have Open Sans installed
# Note: does nothing since it's just a check

0 comments on commit d92aab4

Please sign in to comment.