Fix centering of Q
variants when occurred in enclosures (#751).
This commit is contained in:
parent
85e7d95b39
commit
e429b9ec10
2 changed files with 25 additions and 16 deletions
|
@ -1 +1,2 @@
|
||||||
* Add more alternative exclamation-related ligation sets (`exeqeq-alt-1`, `eqexeq-alt-1`, `eqexeq-dl-alt-1`) (#748).
|
* Add more alternative exclamation-related ligation sets (`exeqeq-alt-1`, `eqexeq-alt-1`, `eqexeq-dl-alt-1`) (#748).
|
||||||
|
* Fix centering of `Q` variants when occurred in enclosures (#751).
|
|
@ -10,6 +10,8 @@ glyph-module
|
||||||
|
|
||||||
define DECOMPOSABLE true
|
define DECOMPOSABLE true
|
||||||
define NON-DECOMPOSABLE false
|
define NON-DECOMPOSABLE false
|
||||||
|
define CENTERED true
|
||||||
|
define NOT-CENTERED false
|
||||||
define SLOPE-INHERIT nothing
|
define SLOPE-INHERIT nothing
|
||||||
|
|
||||||
glyph-block Autobuild-Enclosure-Shared : begin
|
glyph-block Autobuild-Enclosure-Shared : begin
|
||||||
|
@ -42,8 +44,15 @@ glyph-block Autobuild-Enclosure-Shared : begin
|
||||||
[query-glyph gniPart].tryBecomeMirrorOf [query-glyph gniRelated] rs
|
[query-glyph gniPart].tryBecomeMirrorOf [query-glyph gniRelated] rs
|
||||||
return gniPart
|
return gniPart
|
||||||
|
|
||||||
|
glyph-block-export getGlyphDefaultShift
|
||||||
|
define [getGlyphDefaultShift bal baly g] : begin
|
||||||
|
if (g && g.baseAnchors.above && g.baseAnchors.below) : begin
|
||||||
|
if bal : return : CAP / 2 - [mix baly [mix g.baseAnchors.above.y g.baseAnchors.below.y 0.5] bal]
|
||||||
|
: else : return : CAP / 2 - [mix g.baseAnchors.above.y g.baseAnchors.below.y 0.5]
|
||||||
|
return 0
|
||||||
|
|
||||||
glyph-block-export CollectJobs
|
glyph-block-export CollectJobs
|
||||||
define [CollectJobs globallyDecomposable prefix suffix demands] : begin
|
define [CollectJobs globallyDecomposable centered prefix suffix demands] : begin
|
||||||
local nonDecomposable { }
|
local nonDecomposable { }
|
||||||
local decomposableJobs { }
|
local decomposableJobs { }
|
||||||
local decomposableRelJobs { }
|
local decomposableRelJobs { }
|
||||||
|
@ -61,6 +70,8 @@ glyph-block Autobuild-Enclosure-Shared : begin
|
||||||
foreach gr [items-of relatedGlyphs] : if [query-glyph : gr.get g] : begin
|
foreach gr [items-of relatedGlyphs] : if [query-glyph : gr.get g] : begin
|
||||||
if ([query-glyph : gr.get g].advanceWidth != g.advanceWidth)
|
if ([query-glyph : gr.get g].advanceWidth != g.advanceWidth)
|
||||||
set demandDecomposable false
|
set demandDecomposable false
|
||||||
|
if (centered && [getGlyphDefaultShift 0 0 : query-glyph : gr.get g] != [getGlyphDefaultShift 0 0 g])
|
||||||
|
set demandDecomposable false
|
||||||
|
|
||||||
local jobsOrig : if demandDecomposable decomposableJobs nonDecomposable
|
local jobsOrig : if demandDecomposable decomposableJobs nonDecomposable
|
||||||
local jobsRel : if demandDecomposable decomposableRelJobs nonDecomposable
|
local jobsRel : if demandDecomposable decomposableRelJobs nonDecomposable
|
||||||
|
@ -97,7 +108,7 @@ glyph-block AutoBuild-Enclosure : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
glyph-block-import Recursive-Build : Miniature Thinner
|
glyph-block-import Recursive-Build : Miniature Thinner
|
||||||
glyph-block-import Autobuild-Enclosure-Shared : CircNameNoCheck CircName CollectJobs EnsureComponentGlyphT CreateDerivedFontFromJobs applyRelations
|
glyph-block-import Autobuild-Enclosure-Shared : CircNameNoCheck CircName CollectJobs EnsureComponentGlyphT CreateDerivedFontFromJobs applyRelations getGlyphDefaultShift
|
||||||
|
|
||||||
define circleWidthClasses {{'NWID' Width 0.12} {'WWID' WideWidth0 0.08}}
|
define circleWidthClasses {{'NWID' Width 0.12} {'WWID' WideWidth0 0.08}}
|
||||||
define [AdjustDigitCount digits width] : Math.max 1 (digits * Width / width)
|
define [AdjustDigitCount digits width] : Math.max 1 (digits * Width / width)
|
||||||
|
@ -135,16 +146,13 @@ glyph-block AutoBuild-Enclosure : begin
|
||||||
|
|
||||||
local totalWidth 0
|
local totalWidth 0
|
||||||
local firstDerivedGyph null
|
local firstDerivedGyph null
|
||||||
local shift 0
|
|
||||||
foreach [gidPart : items-of parts] : do
|
foreach [gidPart : items-of parts] : do
|
||||||
local derivedGlyph : miniatureFont.queryByNameEnsured gidPart
|
local derivedGlyph : miniatureFont.queryByNameEnsured gidPart
|
||||||
if [not firstDerivedGyph] : set firstDerivedGyph derivedGlyph
|
if [not firstDerivedGyph] : set firstDerivedGyph derivedGlyph
|
||||||
set totalWidth : totalWidth + derivedGlyph.advanceWidth
|
set totalWidth : totalWidth + derivedGlyph.advanceWidth
|
||||||
local xCompress [Math.min 1 (mockInnerWidth / totalWidth)]
|
local xCompress [Math.min 1 (mockInnerWidth / totalWidth)]
|
||||||
set totalWidth : Math.min mockInnerWidth totalWidth
|
set totalWidth : Math.min mockInnerWidth totalWidth
|
||||||
if (firstDerivedGyph && firstDerivedGyph.baseAnchors.above && firstDerivedGyph.baseAnchors.below) : begin
|
local shift : getGlyphDefaultShift bal baly firstDerivedGyph
|
||||||
if bal : set shift : CAP / 2 - [mix baly [mix firstDerivedGyph.baseAnchors.above.y firstDerivedGyph.baseAnchors.below.y 0.5] bal]
|
|
||||||
: else : set shift : CAP / 2 - [mix firstDerivedGyph.baseAnchors.above.y firstDerivedGyph.baseAnchors.below.y 0.5]
|
|
||||||
|
|
||||||
local finalParts {}
|
local finalParts {}
|
||||||
local accumulatedAdvanceSoFar 0
|
local accumulatedAdvanceSoFar 0
|
||||||
|
@ -207,7 +215,7 @@ glyph-block AutoBuild-Enclosure : begin
|
||||||
|
|
||||||
define [EnclosureT prefix builder slopeAngle digits demands fnEnclosure] : begin
|
define [EnclosureT prefix builder slopeAngle digits demands fnEnclosure] : begin
|
||||||
foreach {suffix ww gap} [items-of circleWidthClasses] : do
|
foreach {suffix ww gap} [items-of circleWidthClasses] : do
|
||||||
define jobs : CollectJobs builder.decomposable (prefix + digits) suffix demands
|
define jobs : CollectJobs builder.decomposable CENTERED (prefix + digits) suffix demands
|
||||||
define miniatureFont : CreateDerivedFontFromJobs jobs {} : CircledMiniatureFont slopeAngle digits ww
|
define miniatureFont : CreateDerivedFontFromJobs jobs {} : CircledMiniatureFont slopeAngle digits ww
|
||||||
define gnEnclosure : CircName null (prefix + digits + '.enclosure') {} suffix
|
define gnEnclosure : CircName null (prefix + digits + '.enclosure') {} suffix
|
||||||
if [not : query-glyph gnEnclosure] : create-glyph gnEnclosure : fnEnclosure digits ww gap
|
if [not : query-glyph gnEnclosure] : create-glyph gnEnclosure : fnEnclosure digits ww gap
|
||||||
|
@ -354,7 +362,7 @@ glyph-block AutoBuild-Enclosure : begin
|
||||||
|
|
||||||
define [BracedT rawPrefix digits demands fnBraceShape] : foreach {suffix ww} [items-of circleWidthClasses] : do
|
define [BracedT rawPrefix digits demands fnBraceShape] : foreach {suffix ww} [items-of circleWidthClasses] : do
|
||||||
define prefix : rawPrefix + digits
|
define prefix : rawPrefix + digits
|
||||||
define jobs : CollectJobs DECOMPOSABLE prefix suffix demands
|
define jobs : CollectJobs DECOMPOSABLE CENTERED prefix suffix demands
|
||||||
define miniatureFont : CreateDerivedFontFromJobs jobs {} : lambda [gs] : Miniature
|
define miniatureFont : CreateDerivedFontFromJobs jobs {} : lambda [gs] : Miniature
|
||||||
glyphs -- gs
|
glyphs -- gs
|
||||||
crowd -- [BraceCrowd digits ww]
|
crowd -- [BraceCrowd digits ww]
|
||||||
|
@ -444,7 +452,7 @@ glyph-block AutoBuild-Enclosure : begin
|
||||||
define [DottedScale digits width] : 1 / [Math.pow [AdjustDigitCount digits width] 0.5]
|
define [DottedScale digits width] : 1 / [Math.pow [AdjustDigitCount digits width] 0.5]
|
||||||
define [createDottedGlyphs digits gidDot demands] : begin
|
define [createDottedGlyphs digits gidDot demands] : begin
|
||||||
foreach {suffix ww} [items-of circleWidthClasses] : do
|
foreach {suffix ww} [items-of circleWidthClasses] : do
|
||||||
define jobs : CollectJobs DECOMPOSABLE ('dotted' + digits) suffix demands
|
define jobs : CollectJobs DECOMPOSABLE NOT-CENTERED ('dotted' + digits) suffix demands
|
||||||
|
|
||||||
local miniatureFont : CreateDerivedFontFromJobs jobs {gidDot} : lambda [gs]: Miniature
|
local miniatureFont : CreateDerivedFontFromJobs jobs {gidDot} : lambda [gs]: Miniature
|
||||||
glyphs -- gs
|
glyphs -- gs
|
||||||
|
@ -704,7 +712,7 @@ glyph-block Autobuild-Fractions : if [not recursive] : begin
|
||||||
glyph-block-import Autobuild-Enclosure-Shared : CollectJobs EnsureComponentGlyphT CreateDerivedFontFromJobs applyRelations
|
glyph-block-import Autobuild-Enclosure-Shared : CollectJobs EnsureComponentGlyphT CreateDerivedFontFromJobs applyRelations
|
||||||
|
|
||||||
define [createFracImpl prefix demands fine scaleFactor closing] : begin
|
define [createFracImpl prefix demands fine scaleFactor closing] : begin
|
||||||
local jobs : CollectJobs DECOMPOSABLE prefix '' demands
|
local jobs : CollectJobs DECOMPOSABLE NOT-CENTERED prefix '' demands
|
||||||
define miniatureFont : CreateDerivedFontFromJobs jobs {} : lambda [gs] : Miniature
|
define miniatureFont : CreateDerivedFontFromJobs jobs {} : lambda [gs] : Miniature
|
||||||
glyphs -- gs
|
glyphs -- gs
|
||||||
crowd -- 3.5
|
crowd -- 3.5
|
||||||
|
@ -816,7 +824,7 @@ glyph-block AutoBuild-Accented-Equal : if [not recursive] : begin
|
||||||
|
|
||||||
define [createAccentedOp gnBase crowd scale shiftX shiftY demands] : begin
|
define [createAccentedOp gnBase crowd scale shiftX shiftY demands] : begin
|
||||||
define prefix : 'accent-op{' + gnBase + '}{' + [{crowd scale shiftX shiftY}.join '-'] + '}'
|
define prefix : 'accent-op{' + gnBase + '}{' + [{crowd scale shiftX shiftY}.join '-'] + '}'
|
||||||
local jobs : CollectJobs DECOMPOSABLE prefix '' demands
|
local jobs : CollectJobs DECOMPOSABLE NOT-CENTERED prefix '' demands
|
||||||
local dFont : CreateDerivedFontFromJobs jobs {} : lambda [gs] : Miniature
|
local dFont : CreateDerivedFontFromJobs jobs {} : lambda [gs] : Miniature
|
||||||
glyphs -- gs
|
glyphs -- gs
|
||||||
crowd -- crowd
|
crowd -- crowd
|
||||||
|
@ -931,7 +939,7 @@ glyph-block Autobuild-Ligatures : if [not recursive] : begin
|
||||||
|
|
||||||
define [createLigatures prefix _shrink1 _shrink2 wadj1 wadj2 demands] : for-width-kinds WideWidth2
|
define [createLigatures prefix _shrink1 _shrink2 wadj1 wadj2 demands] : for-width-kinds WideWidth2
|
||||||
local ww : if FMosaicWide MosaicWidth (MosaicWidth * para.diversityM)
|
local ww : if FMosaicWide MosaicWidth (MosaicWidth * para.diversityM)
|
||||||
local jobs : CollectJobs DECOMPOSABLE prefix MosaicNameSuffix demands
|
local jobs : CollectJobs DECOMPOSABLE NOT-CENTERED prefix MosaicNameSuffix demands
|
||||||
local shrink1 : if FMosaicWide 1 [clamp 0 1 (_shrink1 * ww / Width)]
|
local shrink1 : if FMosaicWide 1 [clamp 0 1 (_shrink1 * ww / Width)]
|
||||||
local shrink2 : if FMosaicWide 1 [clamp 0 1 (_shrink2 * ww / Width)]
|
local shrink2 : if FMosaicWide 1 [clamp 0 1 (_shrink2 * ww / Width)]
|
||||||
local df1 : CreateDerivedFontFromJobs jobs {} : lambda [gs] : Thinner gs shrink1
|
local df1 : CreateDerivedFontFromJobs jobs {} : lambda [gs] : Thinner gs shrink1
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue