Browse Source

add fonts methods

Fixes #334
dev
Andy Meneely 4 years ago
parent
commit
d92aab4bf3
  1. 5
      CHANGELOG.md
  2. 2
      docs/conf.py
  3. 20
      docs/dsl/print_system_fonts.rst
  4. 19
      docs/dsl/system_fonts.rst
  5. 2
      lib/squib.rb
  6. 17
      lib/squib/system_fonts.rb
  7. 2
      lib/squib/version.rb
  8. 14
      samples/system_font_debug/_list_fonts.rb

5
CHANGELOG.md

@ -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).

2
docs/conf.py

@ -57,7 +57,7 @@ author = u'Andy Meneely'
# 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.

20
docs/dsl/print_system_fonts.rst

@ -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
docs/dsl/system_fonts.rst

@ -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
lib/squib.rb

@ -7,6 +7,8 @@ require_relative 'squib/version'
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!

17
lib/squib/system_fonts.rb

@ -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
lib/squib/version.rb

@ -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
samples/system_font_debug/_list_fonts.rb

@ -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
Loading…
Cancel
Save