Commit Graph

2445 Commits

Author SHA1 Message Date
Behdad Esfahbod be735d6a68 [varfonts] Skip named-instance that is equivalent to base font 2017-09-20 16:36:03 -07:00
Behdad Esfahbod 8183194ae3 [varfonts] Don't set style for variable-font pattern 2017-09-20 13:21:52 -07:00
Behdad Esfahbod 131219f9e5 [varfonts] Comment 2017-09-20 13:21:52 -07:00
Behdad Esfahbod e85afde2d6 [varfonts] Minor 2017-09-20 13:21:52 -07:00
Behdad Esfahbod 5ee9c38df7 Revert "[varfonts] Use fvar data even if there's no variation in it"
This reverts commit 57764e3a36449da25bb829c34cb08c54e9e5de90.

For regular font pattern we don't look into fvar, so it doesn't make sense to
get non-variation from it either.
2017-09-20 13:21:52 -07:00
Behdad Esfahbod 7e1b84100d Minor 2017-09-20 13:21:52 -07:00
Behdad Esfahbod 01f14de417 [varfonts] Use fvar data even if there's no variation in it 2017-09-20 13:21:52 -07:00
Behdad Esfahbod 38a6d6fba0 Fix possible div-by-zero 2017-09-20 13:21:52 -07:00
Behdad Esfahbod 0ed241cb30 Implement more config bool operations for boolean types
Meh.
2017-09-20 13:21:52 -07:00
Behdad Esfahbod 2544bc5343 Add FcDontCare value to FcBool
This can be used for FC_VARIABLE=FcDontCare for example, to opt into getting
variable fonts for clients that support using them.
2017-09-20 13:21:13 -07:00
Behdad Esfahbod c2fcde498a [varfonts] Map from OpenType to Fontconfig weight values
Oops.
2017-09-20 13:13:35 -07:00
Behdad Esfahbod 9efe0689ae Adjust emboldening logic
Old logic was really bad.  If you requested weight=102 and got a medium
font (weight=100), it would still enable emboldening...

Adjust it to only embolden if request was >= bold and font was <= regular.
2017-09-20 13:13:35 -07:00
Behdad Esfahbod a79f367c3f Fix range comparision operators implementation 2017-09-20 13:13:35 -07:00
Behdad Esfahbod 5bbdffd2c2 Add separate match compare function for size
Has two distinctions from FcCompareRange():
1. As best value, it returns query pattern size, even if it's out of font range,
2. Implements semi-closed interval, as that's what OS/2 v5 table defines
2017-09-20 13:13:35 -07:00
Behdad Esfahbod 2a41738fd7 [fc-match/fc-list/fc-query/fc-scan] Add --brief that is like --verbose without charset 2017-09-20 13:13:35 -07:00
Behdad Esfahbod dc8326d3f1 [fc-query] Remove --ignore-blanks / -b
Blanks are the new black, err, dead!
2017-09-20 13:13:35 -07:00
Behdad Esfahbod 2db7ca7d58 In RenderPrepare(), handle ranges smartly
If font claims to support range [100,900], and request is for [250], then
return [250] in "rendered" pattern.  Previously was returning [100,900].

This is desirable for varfonts weight and width, but probably not for size.
Will roll back size to return request size always, for non-empty ranges.
2017-09-20 13:13:35 -07:00
Behdad Esfahbod 6a13a21e40 [varfonts] Fetch optical-size for named instances 2017-09-20 13:13:35 -07:00
Behdad Esfahbod 0f9bbbcf8f [varfonts] Query variable font in FcFreeTypeQueryAll()
Returns varfont pattern at the end.
2017-09-20 13:13:35 -07:00
Behdad Esfahbod 585f08715b Fix instance-num handling in collections
Ouch!
2017-09-20 13:13:35 -07:00
Behdad Esfahbod 83b4161108 [varfonts] Query varfonts if id >> 16 == 0x8000
If "instance-number" part of face id is set to 0x8000, return a pattern
for variable font as a whole.  This might have a range for weight, width,
and size.

If no variation is found, NULL is returned.

Not hooked up to FcQueryFaceAll() yet.  For now, can be triggered using
fc-query -i 0x80000000
2017-09-20 13:13:35 -07:00
Behdad Esfahbod d3a7c3ce69 [varfonts] Change FC_WEIGHT and FC_WIDTH into ranges 2017-09-20 13:13:35 -07:00
Behdad Esfahbod f034c86756 Print ranges as closed as opposed to half-open
There's nothing assymetrical about how we match them.  Previously we "considered"
them half-open because the OS/2 spec had usLowerOpticalPointSize as inclusive
and usUpperOpticalPointSize as exclusive.  But we do not respect that.

Note that the parsing code accepts both anyway, because of the way our sscanf()
usage is written...
2017-09-20 13:13:35 -07:00
Behdad Esfahbod a4bd5b7c7a [varfonts] Change id argument in FcFreeTypeQuery* to unsigned int
Going to use the top bit to query varfonts.
2017-09-20 13:13:35 -07:00
Behdad Esfahbod 819d3a5541 [varfonts] Add FC_VARIABLE
For now, we mark all fonts as non-variable.
2017-09-20 13:13:35 -07:00
Behdad Esfahbod 80e155c1c0 [varfonts] Add FC_FONT_VARIATIONS
This is for clients to passthru font variation settings.  Modeled
similar to FC_FONT_FEATURES.  Each element value is for one axis
settings, eg. "abcd=2.3" where 'abcd' is the OpenType Font Variations
axis tag.

Needs docs update.
2017-09-20 13:13:35 -07:00
Behdad Esfahbod de00bdb01f Indent 2017-09-20 13:13:35 -07:00
Behdad Esfahbod 66f082451d Check instance-index before accessing array
Ouch!
2017-09-20 13:13:35 -07:00
Behdad Esfahbod b6440cbd7f In FcSubstituteDefault(), handle size range
Takes the midpoint...
2017-09-20 13:13:35 -07:00
Behdad Esfahbod b4813436a3 Rewrite FcCompareRange()
Much simpler now.
2017-09-20 13:13:35 -07:00
Behdad Esfahbod e7a0a0a999 Rename FcCompareSizeRange() to FcCompareRange() 2017-09-20 13:13:35 -07:00
Behdad Esfahbod 7519c567e1 Remove FcCompareSize()
Use FcCompareNumber().  The FcCompareSize() returns 0 ("perfect match")
if v2 is zero.  I cannot think of a use-case for this.  The code has been
there from initial commit in 2002.  I suppose back then Keith had a use
for size=0 to mean scalable or something.  Anyway, remove and see.
2017-09-20 13:13:35 -07:00
Behdad Esfahbod 6eb7e5ae81 Accept NULL in for spacing in FcFreeTypeCharSetAndSpacing() 2017-09-20 13:13:35 -07:00
Behdad Esfahbod 0757556ddf Document FcFreeTypeQueryAll() 2017-09-20 13:07:35 -07:00
Florian Müllner 2084b76bea build: Remove references to deleted file
Commit cc67d7df17 removed 30-urw-aliases.conf, so don't try to
install it.
2017-09-16 16:42:55 +09:00
David Kaspar [Dee'Kej] cc67d7df17 conf.d: Drop aliases for (URW)++ fonts
They have become a part of (URW)++ upstream release now:
  https://github.com/ArtifexSoftware/urw-base35-fonts/tree/master/fontconfig
2017-09-14 15:08:16 +09:00
Akira TAGOH 7e74366f56 und_zsye.orth: polish to get for NotoEmoji-Regular.ttf 2017-09-14 12:25:22 +09:00
Behdad Esfahbod 27a6a299e0 Add FcFreeTypeQueryAll()
Like FcFreeTypeQuery(), but adds patterns for all fonts found, including named
instances of variable fonts.  If id is -1, then all collection faces are queried.
Returns number of fonts added.

This merges the same face loop that was in fc-query. and fcdir.c.

Needs documentation update.
2017-09-12 17:17:05 -04:00
Behdad Esfahbod c524522bb4 Merge branch 'faster'
Results in 5x to 10x speedup in scanning.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=64766
2017-09-12 17:10:03 -04:00
Behdad Esfahbod 8b46a518bd Update documentation for removal of blanks
Patch from Jerry Casiano.
2017-09-12 17:09:43 -04:00
Behdad Esfahbod a8bbbfb601 Minor 2017-09-12 17:02:27 -04:00
Behdad Esfahbod 60b2cf8e4c Call FT_Get_Advance() only as long as we need to determine font width type 2017-09-12 17:02:27 -04:00
Behdad Esfahbod ad0a82b8f8 Inline FcFreeTypeCheckGlyph() 2017-09-12 17:02:27 -04:00
Behdad Esfahbod 1af7518583 Simplify advance-width calculations 2017-09-12 17:02:27 -04:00
Behdad Esfahbod 6f98286e15 Use inline functions instead of macros for a couple of things 2017-09-12 17:02:27 -04:00
Behdad Esfahbod 15eba74ffe Use multiplication instead of division 2017-09-12 17:02:27 -04:00
Behdad Esfahbod ac802955cd Remove unneeded check
FcFreeTypeCheckGlyph() has only one call-site left, and that checks for
glyph != 0 already.
2017-09-12 17:02:27 -04:00
Behdad Esfahbod d7f5332410 Move variables to narrower scope and indent 2017-09-12 17:02:27 -04:00
Behdad Esfahbod 894e5675c8 Mark more parameters FC_UNUSED 2017-09-12 17:02:27 -04:00
Behdad Esfahbod f5bea1e602 Remove blanks support from fc-scan 2017-09-12 17:02:27 -04:00