Fix cv44
application on certain t-derived letters (U+01AB
, U+0236
, U+0288
, U+1DB5
, and U+20A7
) (#1405).
This commit is contained in:
parent
178c951902
commit
78094dd541
10 changed files with 298 additions and 211 deletions
|
@ -1 +1,2 @@
|
||||||
* Fix `cv99` application on ASCII single quotes and graves (#1404).
|
* Fix `cv99` application on ASCII single quotes and graves (#1404).
|
||||||
|
* Fix `cv44` application on certain t-derived letters (`U+01AB`, `U+0236`, `U+0288`, `U+1DB5`, and `U+20A7`) (#1405).
|
||||||
|
|
|
@ -3,7 +3,7 @@ import zlib from "zlib";
|
||||||
|
|
||||||
import { encode, decode } from "@msgpack/msgpack";
|
import { encode, decode } from "@msgpack/msgpack";
|
||||||
|
|
||||||
const Edition = 20;
|
const Edition = 21;
|
||||||
const MAX_AGE = 16;
|
const MAX_AGE = 16;
|
||||||
class GfEntry {
|
class GfEntry {
|
||||||
constructor(age, value) {
|
constructor(age, value) {
|
||||||
|
|
|
@ -1186,7 +1186,7 @@ glyph-block Autobuild-Ligatures : begin
|
||||||
list 0x1F3 { 'd' 'z' }
|
list 0x1F3 { 'd' 'z' }
|
||||||
list 0x478 { 'O' 'y' }
|
list 0x478 { 'O' 'y' }
|
||||||
list 0x479 { 'o' 'y' }
|
list 0x479 { 'o' 'y' }
|
||||||
list 0x20A7 { 'P' 't.flatHook' }
|
list 0x20A7 { 'P' 't' }
|
||||||
list 0x20A8 { 'R' 's' }
|
list 0x20A8 { 'R' 's' }
|
||||||
list 0x20AF { 'D' 'grek/rho' }
|
list 0x20AF { 'D' 'grek/rho' }
|
||||||
list 0x2116 { 'N' 'numeroRightHalf' }
|
list 0x2116 { 'N' 'numeroRightHalf' }
|
||||||
|
|
|
@ -18,149 +18,209 @@ glyph-block Letter-Latin-Lower-T : begin
|
||||||
define dfNarrowT : DivFrame para.diversityF
|
define dfNarrowT : DivFrame para.diversityF
|
||||||
define [xSmallTBarLeftT df] : df.middle - TBalance * df.div * df.div - HalfStroke * HVContrast
|
define [xSmallTBarLeftT df] : df.middle - TBalance * df.div * df.div - HalfStroke * HVContrast
|
||||||
define [xSmallTCrossRefT df] : [xSmallTBarLeftT df] + df.div * TBalance2 + HalfStroke * HVContrast
|
define [xSmallTCrossRefT df] : [xSmallTBarLeftT df] + df.div * TBalance2 + HalfStroke * HVContrast
|
||||||
define xSmallTBarLeft : xSmallTBarLeftT : DivFrame 1
|
|
||||||
|
|
||||||
define yCrossBar XH
|
define yCrossBar XH
|
||||||
define yShortNeck1 : Math.max [mix XH Ascender 0.5] ([mix XH Ascender 0.875] - Stroke * 0.125)
|
define yShortNeck1 : Math.max [mix XH Ascender 0.5] ([mix XH Ascender 0.875] - Stroke * 0.125)
|
||||||
define yShortNeck2 : Math.max [mix XH Ascender 0.5] ([mix XH Ascender 0.75] - Stroke * 0.125)
|
define yShortNeck2 : Math.max [mix XH Ascender 0.5] ([mix XH Ascender 0.75] - Stroke * 0.125)
|
||||||
|
|
||||||
define [SmallTHookShapeT sink offset top bot sw] : begin
|
define Standard : namespace
|
||||||
local hookx : xSmallTBarLeft + [Math.max ((Width - SB * 2) * 0.75 + Stroke * 0.25 * HVContrast) (Stroke * HVContrast * 2.25)]
|
export : define [BarLeftPos df] : xSmallTBarLeftT df
|
||||||
local turn : [mix xSmallTBarLeft hookx 0.5] + CorrectionOMidS
|
|
||||||
local adb : Math.max Hook ((turn - xSmallTBarLeft) * 1.2)
|
|
||||||
|
|
||||||
return : sink
|
export : define [HookShapeT sink df offset top bot sw] : begin
|
||||||
widths.lhs sw
|
local xLeft : xSmallTBarLeftT df
|
||||||
[if (sink == spiro-outline) corner flat] (offset + xSmallTBarLeft) top [heading Downward]
|
local hookx : xLeft + [Math.max ((df.width - df.leftSB * 2) * 0.75 + Stroke * 0.25 * HVContrast) (Stroke * HVContrast * 2.25)]
|
||||||
curl (offset + xSmallTBarLeft) (bot + adb)
|
local turn : [mix xLeft hookx 0.5] + CorrectionOMidS
|
||||||
hookend (bot + O + offset) (tight -- !para.isItalic)
|
local adb : Math.max Hook ((turn - xLeft) * 1.2)
|
||||||
g4 (hookx - offset) (bot + Hook)
|
|
||||||
if (sink == spiro-outline) {[corner (hookx - offset) top]} {}
|
|
||||||
|
|
||||||
define [SmallTCrossBar] : HCrossBar.top
|
return : sink
|
||||||
xSmallTBarLeft + HalfStroke * HVContrast - 1.0625 * LongJut + TBalance2
|
widths.lhs sw
|
||||||
xSmallTBarLeft + HalfStroke * HVContrast + 1.0625 * LongJut + TBalance2
|
[if (sink == spiro-outline) corner flat] (offset + xLeft) top [heading Downward]
|
||||||
begin yCrossBar
|
curl (offset + xLeft) (bot + adb)
|
||||||
|
hookend (bot + O + offset) (tight -- !para.isItalic)
|
||||||
|
g4 (hookx - offset) (bot + Hook)
|
||||||
|
if (sink == spiro-outline) {[corner (hookx - offset) top]} {}
|
||||||
|
|
||||||
define [StandardBody __ top bot] : glyph-proc
|
export : define [CrossBar df] : HCrossBar.top
|
||||||
local g : include : SmallTHookShapeT dispiro 0 top bot Stroke
|
|
||||||
set-base-anchor 'bottomright' g.knots.(g.knots.length - 1).x g.knots.(g.knots.length - 1).y
|
|
||||||
set-base-anchor 'above' (xSmallTBarLeft + 0.5 * Stroke * HVContrast) top
|
|
||||||
set-base-anchor 'below' [mix xSmallTBarLeft g.knots.(g.knots.length - 1).x : StrokeWidthBlend 0.375 0.5] bot
|
|
||||||
set-base-anchor 'overlay' (g.knots.0.x + 0.625 * Stroke * HVContrast) (XH * 0.58)
|
|
||||||
|
|
||||||
include : SmallTCrossBar
|
|
||||||
|
|
||||||
define [DiagTailedSmallTHookShape df top bot sw] : begin
|
|
||||||
local xMid : [xSmallTBarLeftT df] + HalfStroke * HVContrast
|
|
||||||
return : dispiro
|
|
||||||
flat xMid top [widths.center.heading sw Downward]
|
|
||||||
DiagonalTailR df xMid bot [DiagonalTailStdDepth [DivFrame : Math.sqrt df.div] sw] sw
|
|
||||||
|
|
||||||
define [DiagTailBody df top] : glyph-proc
|
|
||||||
local g : include : DiagTailedSmallTHookShape df top 0 Stroke
|
|
||||||
set-base-anchor 'above' ([xSmallTBarLeftT df] + 0.5 * Stroke * HVContrast) top
|
|
||||||
set-base-anchor 'overlay' (g.knots.0.x + 0.125 * Stroke * HVContrast) (XH * 0.58)
|
|
||||||
|
|
||||||
include : HCrossBar.top
|
|
||||||
[xSmallTCrossRefT df] - LongJut * [Math.sqrt df.div]
|
[xSmallTCrossRefT df] - LongJut * [Math.sqrt df.div]
|
||||||
[xSmallTCrossRefT df] + LongJut * [Math.sqrt df.div]
|
[xSmallTCrossRefT df] + LongJut * [Math.sqrt df.div]
|
||||||
begin yCrossBar
|
begin yCrossBar
|
||||||
|
|
||||||
define [FlatBody df top bot] : TFlatShapeImpl false df top bot [mix 1 df.div 2] 0
|
###########################################################################################
|
||||||
define [RetroflexHookBody df top bot] : TFlatShapeImpl true df top bot [mix 1 df.div 2] 0
|
|
||||||
define [TFlatShapeImpl fRetroflex df top bot m ext] : glyph-proc
|
export : define [Body df top bot] : glyph-proc
|
||||||
local xCrossLeft : mix 0 SB m
|
include : CrossBar df
|
||||||
local xCrossRight : mix df.width df.rightSB m
|
|
||||||
local xBarLeft : [mix xCrossLeft xCrossRight 0.42] - Stroke * 0.375 * HVContrast
|
local g : include : HookShapeT dispiro df 0 top bot Stroke
|
||||||
local hd : FlatHookDepth df
|
local gEnd g.knots.(g.knots.length - 1)
|
||||||
include : union
|
set-base-anchor 'bottomright' gEnd.x gEnd.y
|
||||||
HCrossBar.top xCrossLeft (xCrossRight + ext) yCrossBar
|
|
||||||
dispiro
|
local xLeft : xSmallTBarLeftT df
|
||||||
|
set-base-anchor 'above' (xLeft + 0.5 * Stroke * HVContrast) top
|
||||||
|
set-base-anchor 'below' [mix xLeft gEnd.x : StrokeWidthBlend 0.375 0.5] bot
|
||||||
|
set-base-anchor 'overlay' (g.knots.0.x + 0.625 * Stroke * HVContrast) (XH * 0.58)
|
||||||
|
|
||||||
|
export : define [Retroflex df top bot] : Flat.Retroflex df top bot
|
||||||
|
|
||||||
|
define DiagTail : namespace
|
||||||
|
define [HookShape df top bot sw] : begin
|
||||||
|
local xMid : [xSmallTBarLeftT df] + HalfStroke * HVContrast
|
||||||
|
return : dispiro
|
||||||
|
flat xMid top [widths.center.heading sw Downward]
|
||||||
|
DiagonalTailR df xMid bot [DiagonalTailStdDepth [DivFrame : Math.sqrt df.div] sw] sw
|
||||||
|
|
||||||
|
###########################################################################################
|
||||||
|
|
||||||
|
export : define [BarLeftPos df] : xSmallTBarLeftT df
|
||||||
|
|
||||||
|
export : define [Body df top] : glyph-proc
|
||||||
|
include : Standard.CrossBar df
|
||||||
|
|
||||||
|
local g : include : HookShape df top 0 Stroke
|
||||||
|
|
||||||
|
local gEnd g.rhsKnots.(g.rhsKnots.length - 1)
|
||||||
|
set-base-anchor 'bottomright' gEnd.x gEnd.y
|
||||||
|
|
||||||
|
set-base-anchor 'above' ([xSmallTBarLeftT df] + 0.5 * Stroke * HVContrast) top
|
||||||
|
set-base-anchor 'overlay' (g.knots.0.x + 0.125 * Stroke * HVContrast) (XH * 0.58)
|
||||||
|
|
||||||
|
export : define [Retroflex df top bot] : Flat.Retroflex df top bot
|
||||||
|
|
||||||
|
define Flat : namespace
|
||||||
|
export : define [BarLeftPos df] : xSmallTBarLeftT df
|
||||||
|
|
||||||
|
export : define [Body df top bot] : Impl false false df top bot [mix 1 df.div 2] 0
|
||||||
|
export : define [Retroflex df top bot] : Impl false true df top bot [mix 1 df.div 2] 0
|
||||||
|
export : define [CrossRTBody df top bot] : Impl true true df top bot [mix 1 df.div 2] 0
|
||||||
|
|
||||||
|
define [Impl fCross fRetroflex df top bot m ext] : glyph-proc
|
||||||
|
local xCrossLeft : mix 0 SB m
|
||||||
|
local xCrossRight : mix df.width df.rightSB m
|
||||||
|
|
||||||
|
local xBarLeft : if fCross
|
||||||
|
df.middle - 0.5 * HVContrast * Stroke
|
||||||
|
[mix xCrossLeft xCrossRight 0.42] - 0.375 * HVContrast * Stroke
|
||||||
|
|
||||||
|
local hd : FlatHookDepth df
|
||||||
|
define xTailEnd : piecewise
|
||||||
|
fRetroflex : xBarLeft + HookX + HalfStroke * HVContrast
|
||||||
|
fCross : xBarLeft + hd.x
|
||||||
|
true xCrossRight
|
||||||
|
|
||||||
|
include : union
|
||||||
|
HCrossBar.top xCrossLeft (xCrossRight + ext) yCrossBar
|
||||||
|
dispiro
|
||||||
|
widths.rhs
|
||||||
|
if (fRetroflex || fCross)
|
||||||
|
straight.left.start xTailEnd bot
|
||||||
|
list
|
||||||
|
flat xCrossRight bot
|
||||||
|
curl [Math.min (xBarLeft + hd.x) (xCrossRight - 1)] bot
|
||||||
|
archv.superness DesignParameters.tightHookSuperness
|
||||||
|
flat xBarLeft [if fRetroflex (bot + Hook + HalfStroke) hd.y]
|
||||||
|
curl xBarLeft top [heading Upward]
|
||||||
|
|
||||||
|
set-base-anchor 'above' (xBarLeft + 0.5 * Stroke * HVContrast) top
|
||||||
|
set-base-anchor 'topright' xCrossRight Ascender
|
||||||
|
set-base-anchor 'overlay' (xBarLeft + 0.625 * Stroke * HVContrast) (XH * 0.58)
|
||||||
|
set-base-anchor 'below' (HalfStroke * HVContrast + [Math.min (xBarLeft + hd.x / 2) (xCrossRight - 1)]) bot
|
||||||
|
set-base-anchor 'bottomright' xTailEnd bot
|
||||||
|
set-base-anchor 'lTailHookAttach' xTailEnd (bot + Stroke)
|
||||||
|
|
||||||
|
define Cross : namespace
|
||||||
|
export : define [BarLeftPos df] : df.middle - 0.5 * HVContrast * Stroke
|
||||||
|
|
||||||
|
export : define [Body df top bot] : glyph-proc
|
||||||
|
include : VBar df.middle 0 top
|
||||||
|
include : HCrossBar.top (df.middle - LongJut * [Math.sqrt df.div]) (df.middle + LongJut * [Math.sqrt df.div]) yCrossBar
|
||||||
|
set-base-anchor 'overlay' df.middle (XH * 0.58)
|
||||||
|
|
||||||
|
export : define [Retroflex df top bot] : Flat.CrossRTBody df top bot
|
||||||
|
|
||||||
|
export : define [LTBody df top bot] : glyph-proc
|
||||||
|
include : Body df top bot
|
||||||
|
|
||||||
|
define xEnd : df.middle + 1.25 * HVContrast * Stroke
|
||||||
|
include : HBarBottom df.middle xEnd 0
|
||||||
|
set-base-anchor 'bottomright' xEnd bot
|
||||||
|
set-base-anchor 'lTailHookAttach' xEnd (bot + Stroke)
|
||||||
|
|
||||||
|
export : define [PLBody df top bot] : glyph-proc
|
||||||
|
include : Body df top bot
|
||||||
|
include : HBarBottom df.middle RightSB 0
|
||||||
|
|
||||||
|
define HooklessAsymmetric : namespace
|
||||||
|
export : define [BarLeftPos df] : xSmallTBarLeftT df
|
||||||
|
|
||||||
|
export : define [Body df top bot] : glyph-proc
|
||||||
|
define xBarLeft : xSmallTBarLeftT df
|
||||||
|
include : VBarLeft xBarLeft 0 top
|
||||||
|
include : difference
|
||||||
|
HCrossBar.top xBarLeft (df.middle + df.div * LongJut) yCrossBar
|
||||||
|
MaskLeft (xBarLeft - O)
|
||||||
|
set-base-anchor 'above' (xBarLeft + 0.5 * Stroke * HVContrast) top
|
||||||
|
set-base-anchor 'overlay' (xBarLeft + 0.625 * Stroke * HVContrast) (XH * 0.58)
|
||||||
|
set-base-anchor 'below' (xBarLeft + HalfStroke * HVContrast) bot
|
||||||
|
|
||||||
|
export : define [LTBody df top bot] : glyph-proc
|
||||||
|
include : Body df top bot
|
||||||
|
define xBarLeft : xSmallTBarLeftT df
|
||||||
|
|
||||||
|
define xEnd : xBarLeft + 1.75 * HVContrast * Stroke
|
||||||
|
include : HBarBottom xBarLeft xEnd 0
|
||||||
|
set-base-anchor 'bottomright' xEnd bot
|
||||||
|
set-base-anchor 'lTailHookAttach' xEnd (bot + Stroke)
|
||||||
|
|
||||||
|
export : define [Retroflex df top bot] : glyph-proc
|
||||||
|
define xBarLeft : xSmallTBarLeftT df
|
||||||
|
include : dispiro
|
||||||
widths.rhs
|
widths.rhs
|
||||||
if fRetroflex
|
straight.left.start (xBarLeft + HookX + HalfStroke * HVContrast) bot
|
||||||
straight.left.start (xBarLeft + HookX + HalfStroke * HVContrast) bot
|
flat xBarLeft (bot + Hook + HalfStroke)
|
||||||
list
|
|
||||||
flat xCrossRight bot
|
|
||||||
curl [Math.min (xBarLeft + hd.x) (xCrossRight - 1)] bot
|
|
||||||
archv.superness DesignParameters.tightHookSuperness
|
|
||||||
flat xBarLeft [if fRetroflex (bot + Hook + HalfStroke) hd.y]
|
|
||||||
curl xBarLeft top [heading Upward]
|
curl xBarLeft top [heading Upward]
|
||||||
set-base-anchor 'above' (xBarLeft + 0.5 * Stroke * HVContrast) top
|
include : difference
|
||||||
set-base-anchor 'topright' xCrossRight Ascender
|
HCrossBar.top xBarLeft (df.middle + df.div * LongJut) yCrossBar
|
||||||
set-base-anchor 'overlay' (xBarLeft + 0.625 * Stroke * HVContrast) (XH * 0.58)
|
MaskLeft (xBarLeft - O)
|
||||||
set-base-anchor 'below' (HalfStroke * HVContrast + [Math.min (xBarLeft + hd.x / 2) (xCrossRight - 1)]) bot
|
|
||||||
|
|
||||||
define [CrossBody df top bot] : glyph-proc
|
export : define [PLBody df top bot] : glyph-proc
|
||||||
include : VBar df.middle 0 top
|
include : Body df top bot
|
||||||
include : HCrossBar.top (df.middle - LongJut * [Math.sqrt df.div]) (df.middle + LongJut * [Math.sqrt df.div]) yCrossBar
|
define xBarLeft : xSmallTBarLeftT df
|
||||||
set-base-anchor 'overlay' df.middle (XH * 0.58)
|
include : HBarBottom xBarLeft RightSB 0
|
||||||
|
|
||||||
define [CrossPLBody df top bot] : glyph-proc
|
|
||||||
include : CrossBody df top bot
|
|
||||||
include : HBarBottom df.middle RightSB 0
|
|
||||||
|
|
||||||
define [HooklessAsymmetricBody df top bot] : glyph-proc
|
|
||||||
define xBarLeft : xSmallTBarLeftT df
|
|
||||||
include : VBarLeft xBarLeft 0 top
|
|
||||||
include : difference
|
|
||||||
HCrossBar.top xBarLeft (df.middle + df.div * LongJut) yCrossBar
|
|
||||||
MaskLeft (xBarLeft - O)
|
|
||||||
set-base-anchor 'above' (xBarLeft + 0.5 * Stroke * HVContrast) top
|
|
||||||
set-base-anchor 'overlay' (xBarLeft + 0.625 * Stroke * HVContrast) (XH * 0.58)
|
|
||||||
set-base-anchor 'below' (xBarLeft + HalfStroke * HVContrast) bot
|
|
||||||
|
|
||||||
define [HooklessAsymmetricPLBody df top bot] : glyph-proc
|
|
||||||
include : HooklessAsymmetricBody df top bot
|
|
||||||
|
|
||||||
define xBarLeft : xSmallTBarLeftT df
|
|
||||||
include : HBarBottom xBarLeft RightSB 0
|
|
||||||
|
|
||||||
define [PhoneticLeftBody df top bot] : glyph-proc
|
|
||||||
include : TFlatShapeImpl false df top bot 1 0
|
|
||||||
|
|
||||||
define SmallTConfig : object
|
define SmallTConfig : object
|
||||||
standard { [DivFrame 1] StandardBody Ascender }
|
standard { [DivFrame 1] Standard Ascender }
|
||||||
diagonalTailed { dfNarrowT DiagTailBody Ascender }
|
diagonalTailed { dfNarrowT DiagTail Ascender }
|
||||||
flatHook { dfNarrowT FlatBody Ascender }
|
flatHook { dfNarrowT Flat Ascender }
|
||||||
phoneticLeft { dfNarrowT FlatBody Ascender }
|
cross { dfNarrowT Cross Ascender }
|
||||||
retroflexHookBase { dfNarrowT RetroflexHookBody Ascender }
|
hooklessAsymmetric { dfNarrowT HooklessAsymmetric Ascender }
|
||||||
cross { dfNarrowT CrossBody Ascender }
|
|
||||||
hooklessAsymmetric { dfNarrowT HooklessAsymmetricBody Ascender }
|
|
||||||
crossPL { dfNarrowT CrossPLBody Ascender }
|
|
||||||
hooklessAsymmetricPL { dfNarrowT HooklessAsymmetricPLBody Ascender }
|
|
||||||
|
|
||||||
standardShortNeck { [DivFrame 1] StandardBody yShortNeck1 }
|
standardShortNeck { [DivFrame 1] Standard yShortNeck1 }
|
||||||
diagonalTailedShortNeck { dfNarrowT DiagTailBody yShortNeck1 }
|
diagonalTailedShortNeck { dfNarrowT DiagTail yShortNeck1 }
|
||||||
flatHookShortNeck { dfNarrowT FlatBody yShortNeck1 }
|
flatHookShortNeck { dfNarrowT Flat yShortNeck1 }
|
||||||
phoneticLeftShortNeck { dfNarrowT FlatBody yShortNeck1 }
|
crossShortNeck { dfNarrowT Cross yShortNeck1 }
|
||||||
retroflexHookBaseShortNeck { dfNarrowT RetroflexHookBody yShortNeck1 }
|
hooklessAsymmetricShortNeck { dfNarrowT HooklessAsymmetric yShortNeck1 }
|
||||||
crossShortNeck { dfNarrowT CrossBody yShortNeck1 }
|
|
||||||
hooklessAsymmetricShortNeck { dfNarrowT HooklessAsymmetricBody yShortNeck1 }
|
|
||||||
crossPLShortNeck { dfNarrowT CrossPLBody yShortNeck1 }
|
|
||||||
hooklessAsymmetricPLShortNeck { dfNarrowT HooklessAsymmetricPLBody yShortNeck1 }
|
|
||||||
|
|
||||||
standardShortNeck2 { [DivFrame 1] StandardBody yShortNeck2 }
|
standardShortNeck2 { [DivFrame 1] Standard yShortNeck2 }
|
||||||
diagonalTailedShortNeck2 { dfNarrowT DiagTailBody yShortNeck2 }
|
diagonalTailedShortNeck2 { dfNarrowT DiagTail yShortNeck2 }
|
||||||
flatHookShortNeck2 { dfNarrowT FlatBody yShortNeck2 }
|
flatHookShortNeck2 { dfNarrowT Flat yShortNeck2 }
|
||||||
phoneticLeftShortNeck2 { dfNarrowT FlatBody yShortNeck2 }
|
crossShortNeck2 { dfNarrowT Cross yShortNeck2 }
|
||||||
retroflexHookBaseShortNeck2 { dfNarrowT RetroflexHookBody yShortNeck2 }
|
hooklessAsymmetricShortNeck2 { dfNarrowT HooklessAsymmetric yShortNeck2 }
|
||||||
crossShortNeck2 { dfNarrowT CrossBody yShortNeck2 }
|
|
||||||
hooklessAsymmetricShortNeck2 { dfNarrowT HooklessAsymmetricBody yShortNeck2 }
|
|
||||||
crossPLShortNeck2 { dfNarrowT CrossPLBody yShortNeck2 }
|
|
||||||
hooklessAsymmetricPLShortNeck2 { dfNarrowT HooklessAsymmetricPLBody yShortNeck2 }
|
|
||||||
|
|
||||||
foreach { suffix { df body top } } [Object.entries SmallTConfig] : do
|
foreach { suffix { df Style top } } [Object.entries SmallTConfig] : do
|
||||||
create-glyph "t.\(suffix)" : glyph-proc
|
create-glyph "t.\(suffix)" : glyph-proc
|
||||||
set-width df.width
|
set-width df.width
|
||||||
include : df.markSet.b
|
include : df.markSet.b
|
||||||
include : body df top 0
|
include : Style.Body df top 0
|
||||||
|
|
||||||
|
create-glyph "t/phoneticLeft2.\(suffix)" : glyph-proc
|
||||||
|
set-width df.width
|
||||||
|
include : df.markSet.b
|
||||||
|
include : (Style.PLBody || Style.Body) df top 0
|
||||||
|
|
||||||
create-glyph "t/teshLeft.\(suffix)" : glyph-proc
|
create-glyph "t/teshLeft.\(suffix)" : glyph-proc
|
||||||
define df1 : DivFrame 1
|
define df1 : DivFrame 1
|
||||||
set-width df1.width
|
set-width df1.width
|
||||||
include : df1.markSet.b
|
include : df1.markSet.b
|
||||||
include : body df1 top 0
|
include : Style.Body df1 top 0
|
||||||
include : HCrossBar.top df1.middle (df1.width + df1.middle) yCrossBar
|
include : HCrossBar.top df1.middle (df1.width + df1.middle) yCrossBar
|
||||||
|
|
||||||
create-glyph "tHookTop.\(suffix)" : glyph-proc
|
create-glyph "tHookTop.\(suffix)" : glyph-proc
|
||||||
|
@ -168,40 +228,51 @@ glyph-block Letter-Latin-Lower-T : begin
|
||||||
currentGlyph.clearGeometry
|
currentGlyph.clearGeometry
|
||||||
local attach : currentGlyph.gizmo.unapply currentGlyph.baseAnchors.above
|
local attach : currentGlyph.gizmo.unapply currentGlyph.baseAnchors.above
|
||||||
include : union
|
include : union
|
||||||
difference [body df top 0] [MaskAbove XH]
|
difference [Style.Body df top 0] [MaskAbove XH]
|
||||||
VerticalHook attach.x XH HookX (-Hook)
|
VerticalHook attach.x XH HookX (-Hook)
|
||||||
|
|
||||||
if (body === StandardBody) : create-glyph "tLTail.\(suffix)" : glyph-proc
|
create-glyph "tLTail.\(suffix)" : glyph-proc
|
||||||
include : MarkSet.if
|
set-width df.width
|
||||||
include [refer-glyph "t.\(suffix)"] AS_BASE ALSO_METRICS
|
include : df.markSet.if
|
||||||
local attach : currentGlyph.gizmo.unapply currentGlyph.baseAnchors.bottomright
|
include : (Style.LTBody || Style.Body) df top 0
|
||||||
include : VBarRight attach.x 0 attach.y
|
|
||||||
|
local attach : currentGlyph.gizmo.unapply (currentGlyph.baseAnchors.lTailHookAttach || currentGlyph.baseAnchors.bottomright)
|
||||||
|
if (attach.y > 0) : include : VBarRight attach.x 0 attach.y
|
||||||
include : VerticalHook (attach.x - HalfStroke * HVContrast) 0 (-HookX) Hook
|
include : VerticalHook (attach.x - HalfStroke * HVContrast) 0 (-HookX) Hook
|
||||||
|
|
||||||
create-glyph "tRTail.\(suffix)" : glyph-proc
|
create-glyph "tRTail.\(suffix)" : glyph-proc
|
||||||
set-width df.width
|
set-width df.width
|
||||||
include : df.markSet.if
|
include : df.markSet.if
|
||||||
include : body df top Descender
|
include : Style.Retroflex df top Descender
|
||||||
|
|
||||||
turned "turnt.\(suffix)" nothing "t.\(suffix)" df.middle (XH / 2) [df.markSet.p]
|
turned "turnt.\(suffix)" nothing "t.\(suffix)" df.middle (XH / 2) [df.markSet.p]
|
||||||
|
|
||||||
create-glyph "tCurlyTal.\(suffix)" : glyph-proc
|
create-glyph "tCurlyTail.\(suffix)" : glyph-proc
|
||||||
include : MarkSet.b
|
include : MarkSet.b
|
||||||
|
|
||||||
|
local df : DivFrame 1
|
||||||
local fine : AdviceStroke 3.5
|
local fine : AdviceStroke 3.5
|
||||||
local rinner : LongJut / 2 - fine / 2
|
local rinner : LongJut / 2 - fine / 2
|
||||||
local x2 : mix SB xSmallTBarLeft 0.4
|
|
||||||
|
local xLeft : Style.BarLeftPos df
|
||||||
|
|
||||||
|
local x2 : mix SB xLeft 0.4
|
||||||
local y2 : -fine
|
local y2 : -fine
|
||||||
include : HBarTop (xSmallTBarLeft + HalfStroke - LongJut + TBalance2) (xSmallTBarLeft + HalfStroke + LongJut + TBalance2) XH
|
|
||||||
|
include : difference
|
||||||
|
Style.Body df top 0
|
||||||
|
MaskBelow (yCrossBar - Stroke - 0.1)
|
||||||
|
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.lhs
|
widths.lhs
|
||||||
flat xSmallTBarLeft top [heading Downward]
|
flat xLeft (yCrossBar - Stroke) [heading Downward]
|
||||||
curl xSmallTBarLeft (fine + rinner * 2)
|
curl xLeft (fine + rinner * 2)
|
||||||
CurlyTail fine rinner (xSmallTBarLeft+ Stroke * HVContrast) 0 (xSmallTBarLeft + Stroke * HVContrast + LongJut) x2 y2
|
CurlyTail fine rinner (xLeft + Stroke * HVContrast) 0 (xLeft + Stroke * HVContrast + LongJut) x2 y2
|
||||||
|
|
||||||
select-variant 't' 't'
|
select-variant 't' 't'
|
||||||
select-variant 't/teshLeft' (follow -- 't')
|
select-variant 't/teshLeft' (follow -- 't')
|
||||||
select-variant 't/phoneticLeft1' (shapeFrom -- 't')
|
select-variant 't/phoneticLeft1' (shapeFrom -- 't')
|
||||||
select-variant 't/phoneticLeft2' (shapeFrom -- 't')
|
select-variant 't/phoneticLeft2'
|
||||||
select-variant 'turnt' 0x287 (follow -- 't')
|
select-variant 'turnt' 0x287 (follow -- 't')
|
||||||
CreateCommaCaronComposition 'tcaron' 0x165 't'
|
CreateCommaCaronComposition 'tcaron' 0x165 't'
|
||||||
derive-glyphs 'tCedilla' 0x163 't' ConnectedCedilla
|
derive-glyphs 'tCedilla' 0x163 't' ConnectedCedilla
|
||||||
|
@ -209,7 +280,7 @@ glyph-block Letter-Latin-Lower-T : begin
|
||||||
select-variant "tHookTop" 0x1AD
|
select-variant "tHookTop" 0x1AD
|
||||||
select-variant 'tLTail' 0x1AB
|
select-variant 'tLTail' 0x1AB
|
||||||
select-variant 'tRTail' 0x288
|
select-variant 'tRTail' 0x288
|
||||||
select-variant 'tCurlyTal' 0x236 (follow -- 'tLTail')
|
select-variant 'tCurlyTail' 0x236 (follow -- 'tRTail')
|
||||||
|
|
||||||
CreateAccentedComposition 'tTildeOver' 0x1D75 't' 'tildeOver'
|
CreateAccentedComposition 'tTildeOver' 0x1D75 't' 'tildeOver'
|
||||||
|
|
||||||
|
@ -217,23 +288,23 @@ glyph-block Letter-Latin-Lower-T : begin
|
||||||
define SLAB-NONE 0
|
define SLAB-NONE 0
|
||||||
define SLAB-CLASSICAL 1
|
define SLAB-CLASSICAL 1
|
||||||
define SLAB-INWARD 2
|
define SLAB-INWARD 2
|
||||||
define [TsLigStrokeShape stroke top sb] : begin
|
define [TsLigStrokeShape df stroke top sb] : begin
|
||||||
define archDepth : adviceSSmooth (XH + 0.5 * ArchDepth) (-1) stroke
|
define archDepth : adviceSSmooth (XH + 0.5 * ArchDepth) (-1) stroke
|
||||||
return : dispiro
|
return : dispiro
|
||||||
widths.lhs stroke
|
widths.lhs stroke
|
||||||
flat xSmallTBarLeft top [heading Downward]
|
flat [xSmallTBarLeftT df] top [heading Downward]
|
||||||
curl xSmallTBarLeft XH [heading Downward]
|
curl [xSmallTBarLeftT df] XH [heading Downward]
|
||||||
alsoThru.g2 0.5 0.5 [widths.center stroke]
|
alsoThru.g2 0.5 0.5 [widths.center stroke]
|
||||||
g4 RightSB (archDepth) [widths.rhs stroke]
|
g4 df.rightSB (archDepth) [widths.rhs stroke]
|
||||||
match sb
|
match sb
|
||||||
[Just SLAB-CLASSICAL] : SerifedArcEnd_RtlRhs SB Middle 0 stroke SHook
|
[Just SLAB-CLASSICAL] : SerifedArcEnd_RtlRhs df.leftSB Middle 0 stroke SHook
|
||||||
[Just SLAB-INWARD] : list
|
[Just SLAB-INWARD] : list
|
||||||
arcvh
|
arcvh
|
||||||
g4 (Middle + CorrectionOMidX * stroke) O
|
g4 (df.middle + CorrectionOMidX * stroke) O
|
||||||
g4 SB DToothlessRise
|
g4 df.leftSB DToothlessRise
|
||||||
__ : list
|
__ : list
|
||||||
hookend O (sw -- stroke) (swItalicAdj -- Stroke)
|
hookend O (sw -- stroke) (swItalicAdj -- Stroke)
|
||||||
g4 SB SHook
|
g4 df.leftSB SHook
|
||||||
|
|
||||||
define TSUpperConfig : object
|
define TSUpperConfig : object
|
||||||
standard { Ascender }
|
standard { Ascender }
|
||||||
|
@ -242,11 +313,12 @@ glyph-block Letter-Latin-Lower-T : begin
|
||||||
|
|
||||||
foreach { suffix { yTop } } [Object.entries TSUpperConfig] : do
|
foreach { suffix { yTop } } [Object.entries TSUpperConfig] : do
|
||||||
create-glyph "tsLig/upperHalf.\(suffix)" : glyph-proc
|
create-glyph "tsLig/upperHalf.\(suffix)" : glyph-proc
|
||||||
|
define df : DivFrame 1
|
||||||
set-base-anchor 'cvDecompose' 0 0
|
set-base-anchor 'cvDecompose' 0 0
|
||||||
include : difference
|
include : difference
|
||||||
TsLigStrokeShape Stroke top false
|
TsLigStrokeShape df Stroke top false
|
||||||
MaskBelow XH
|
MaskBelow XH
|
||||||
include : SmallTCrossBar
|
include : Standard.CrossBar df
|
||||||
|
|
||||||
define TSLowerConfig : object
|
define TSLowerConfig : object
|
||||||
serifless { SLAB-NONE }
|
serifless { SLAB-NONE }
|
||||||
|
@ -255,10 +327,11 @@ glyph-block Letter-Latin-Lower-T : begin
|
||||||
|
|
||||||
foreach { suffix { doBS } } [Object.entries TSLowerConfig] : do
|
foreach { suffix { doBS } } [Object.entries TSLowerConfig] : do
|
||||||
create-glyph "tsLig/lowerHalf.\(suffix)" : glyph-proc
|
create-glyph "tsLig/lowerHalf.\(suffix)" : glyph-proc
|
||||||
include : MarkSet.b
|
define df : DivFrame 1
|
||||||
|
include : df.markSet.b
|
||||||
set-mark-anchor 'cvDecompose' 0 0
|
set-mark-anchor 'cvDecompose' 0 0
|
||||||
include : intersection
|
include : intersection
|
||||||
TsLigStrokeShape Stroke Ascender doBS
|
TsLigStrokeShape df Stroke Ascender doBS
|
||||||
MaskBelow XH
|
MaskBelow XH
|
||||||
include : SAutoSlabEnd doBS 0 Stroke Hook
|
include : SAutoSlabEnd doBS 0 Stroke Hook
|
||||||
|
|
||||||
|
@ -271,15 +344,17 @@ glyph-block Letter-Latin-Lower-T : begin
|
||||||
CvDecompose.set currentGlyph { 'tsLig/upperHalf' 'tsLig/lowerHalf' }
|
CvDecompose.set currentGlyph { 'tsLig/upperHalf' 'tsLig/lowerHalf' }
|
||||||
|
|
||||||
create-glyph 'mathbb/t' 0x1D565 : glyph-proc
|
create-glyph 'mathbb/t' 0x1D565 : glyph-proc
|
||||||
include : HBarTop xSmallTBarLeft (xSmallTBarLeft + BBD) Ascender BBS
|
define df : DivFrame 1
|
||||||
include : SmallTHookShapeT dispiro 0 Ascender 0 BBS
|
define xLeft : xSmallTBarLeftT df
|
||||||
|
include : HBarTop xLeft (xLeft + BBD) Ascender BBS
|
||||||
|
include : Standard.HookShapeT dispiro df 0 Ascender 0 BBS
|
||||||
include : intersection
|
include : intersection
|
||||||
VBarLeft (xSmallTBarLeft + BBD) 0 Ascender BBS
|
VBarLeft (xLeft + BBD) 0 Ascender BBS
|
||||||
SmallTHookShapeT spiro-outline 1 Ascender 0 BBS
|
Standard.HookShapeT spiro-outline df 1 Ascender 0 BBS
|
||||||
include : difference
|
include : difference
|
||||||
HCrossBar.top
|
HCrossBar.top
|
||||||
xSmallTBarLeft + (BBD / 2) - LongJut + TBalance2
|
xLeft + (BBD / 2) - LongJut + TBalance2
|
||||||
xSmallTBarLeft + (BBD / 2) + LongJut + TBalance2
|
xLeft + (BBD / 2) + LongJut + TBalance2
|
||||||
begin yCrossBar
|
begin yCrossBar
|
||||||
begin BBS
|
begin BBS
|
||||||
Rect Ascender 0 xSmallTBarLeft (xSmallTBarLeft + BBD)
|
Rect Ascender 0 xLeft (xLeft + BBD)
|
|
@ -304,7 +304,7 @@ glyph-block Letter-Latin-S : begin
|
||||||
|
|
||||||
include : SAutoSlabStart doTS CAP Stroke Hook
|
include : SAutoSlabStart doTS CAP Stroke Hook
|
||||||
local stroke : include : SStrokeImpl CAP 0 doTS doBS [AdviceStroke2 2 3 CAP] EssUpper
|
local stroke : include : SStrokeImpl CAP 0 doTS doBS [AdviceStroke2 2 3 CAP] EssUpper
|
||||||
local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1)
|
local start stroke.lhsKnots.(stroke.lhsKnots.length - 1)
|
||||||
|
|
||||||
local sw : AdviceStroke2 2 3 CAP
|
local sw : AdviceStroke2 2 3 CAP
|
||||||
include : dispiro
|
include : dispiro
|
||||||
|
@ -319,7 +319,7 @@ glyph-block Letter-Latin-S : begin
|
||||||
|
|
||||||
include : SAutoSlabStart doTS XH [AdviceStroke2 2 3 XH] Hook
|
include : SAutoSlabStart doTS XH [AdviceStroke2 2 3 XH] Hook
|
||||||
local stroke : include : SmallSStrokeImpl doTS doBS [AdviceStroke2 2 3 XH] EssLower
|
local stroke : include : SmallSStrokeImpl doTS doBS [AdviceStroke2 2 3 XH] EssLower
|
||||||
local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1)
|
local start stroke.lhsKnots.(stroke.lhsKnots.length - 1)
|
||||||
|
|
||||||
local sw : AdviceStroke2 2 3 XH
|
local sw : AdviceStroke2 2 3 XH
|
||||||
include : dispiro
|
include : dispiro
|
||||||
|
@ -335,7 +335,7 @@ glyph-block Letter-Latin-S : begin
|
||||||
|
|
||||||
include : SAutoSlabStart doTS XH [AdviceStroke2 2 3 XH] Hook
|
include : SAutoSlabStart doTS XH [AdviceStroke2 2 3 XH] Hook
|
||||||
local stroke : include : SmallSStrokeImpl doTS doBS [AdviceStroke2 2 3 XH] EssLower
|
local stroke : include : SmallSStrokeImpl doTS doBS [AdviceStroke2 2 3 XH] EssLower
|
||||||
local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1)
|
local start stroke.lhsKnots.(stroke.lhsKnots.length - 1)
|
||||||
|
|
||||||
include : new-glyph : glyph-proc
|
include : new-glyph : glyph-proc
|
||||||
local sw : AdviceStroke2 2 3 XH
|
local sw : AdviceStroke2 2 3 XH
|
||||||
|
|
|
@ -106,7 +106,7 @@ glyph-block Letter-Latin-Upper-P : begin
|
||||||
set PShape.OpenGap : function [] : params [top [mul PShape.defaultMul] [bp PShape.BarPos] [sw Stroke]] : VBarLeft
|
set PShape.OpenGap : function [] : params [top [mul PShape.defaultMul] [bp PShape.BarPos] [sw Stroke]] : VBarLeft
|
||||||
SB * mul + sw * HVContrast
|
SB * mul + sw * HVContrast
|
||||||
[PBarPosY top sw bp] - sw
|
[PBarPosY top sw bp] - sw
|
||||||
[PBarPosY top sw bp] + sw + 1
|
Math.max ([PBarPosY top sw bp] + sw) [mix top [PBarPosY top sw bp] 0.5]
|
||||||
0.2 * (RightSB - SB) * ([AdviceStroke 5] / Stroke)
|
0.2 * (RightSB - SB) * ([AdviceStroke 5] / Stroke)
|
||||||
|
|
||||||
set RevPShape.SlabMotion : function [top sw mul] : glyph-proc
|
set RevPShape.SlabMotion : function [top sw mul] : glyph-proc
|
||||||
|
@ -119,7 +119,7 @@ glyph-block Letter-Latin-Upper-P : begin
|
||||||
set RevPShape.OpenGap : function [] : params [top [mul PShape.defaultMul] [bp PShape.BarPos] [sw Stroke]] : VBarRight
|
set RevPShape.OpenGap : function [] : params [top [mul PShape.defaultMul] [bp PShape.BarPos] [sw Stroke]] : VBarRight
|
||||||
Width - SB * mul - sw * HVContrast
|
Width - SB * mul - sw * HVContrast
|
||||||
[PBarPosY top sw bp] - sw
|
[PBarPosY top sw bp] - sw
|
||||||
[PBarPosY top sw bp] + sw + 1
|
Math.max ([PBarPosY top sw bp] + sw) [mix top [PBarPosY top sw bp] 0.5]
|
||||||
0.2 * (RightSB - SB) * ([AdviceStroke 5] / Stroke)
|
0.2 * (RightSB - SB) * ([AdviceStroke 5] / Stroke)
|
||||||
|
|
||||||
define PConfig : object
|
define PConfig : object
|
||||||
|
|
|
@ -37,7 +37,7 @@ glyph-block Digits-Five : begin
|
||||||
include : difference
|
include : difference
|
||||||
glyph-proc
|
glyph-proc
|
||||||
local fiveStroke : include FiveStroke
|
local fiveStroke : include FiveStroke
|
||||||
local firstKnot : currentGlyph.gizmo.unapply fiveStroke.rhsKnots.0
|
local firstKnot fiveStroke.rhsKnots.0
|
||||||
|
|
||||||
local oblCor : Math.hypot 1 obl
|
local oblCor : Math.hypot 1 obl
|
||||||
local xVBar : firstKnot.x - oblCor * sw * HVContrast
|
local xVBar : firstKnot.x - oblCor * sw * HVContrast
|
||||||
|
|
|
@ -48,10 +48,10 @@ class DiSpiroProxy {
|
||||||
return this.m_origKnots;
|
return this.m_origKnots;
|
||||||
}
|
}
|
||||||
get lhsKnots() {
|
get lhsKnots() {
|
||||||
return this.geometry.expand().lhs;
|
return this.geometry.expand().lhsUntransformed;
|
||||||
}
|
}
|
||||||
get rhsKnots() {
|
get rhsKnots() {
|
||||||
return this.geometry.expand().rhs;
|
return this.geometry.expand().rhsUntransformed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function prepareSpiroKnots(_knots, s) {
|
function prepareSpiroKnots(_knots, s) {
|
||||||
|
|
|
@ -146,7 +146,18 @@ export class SpiroExpander {
|
||||||
rhs[j].y = knot.y - knot.d2 * dy;
|
rhs[j].y = knot.y - knot.d2 * dy;
|
||||||
}
|
}
|
||||||
this.interpolateUnimportantKnots(lhs, rhs);
|
this.interpolateUnimportantKnots(lhs, rhs);
|
||||||
return { lhs, rhs };
|
|
||||||
|
const lhsUntransformed = [],
|
||||||
|
rhsUntransformed = [];
|
||||||
|
for (const z of lhs) {
|
||||||
|
const u = this.gizmo.unapply(z);
|
||||||
|
lhsUntransformed.push({ type: z.type, x: u.x, y: u.y });
|
||||||
|
}
|
||||||
|
for (const z of rhs) {
|
||||||
|
const u = this.gizmo.unapply(z);
|
||||||
|
rhsUntransformed.push({ type: z.type, x: u.x, y: u.y });
|
||||||
|
}
|
||||||
|
return { lhs, rhs, lhsUntransformed, rhsUntransformed };
|
||||||
}
|
}
|
||||||
interpolateUnimportantKnots(lhs, rhs) {
|
interpolateUnimportantKnots(lhs, rhs) {
|
||||||
for (let j = 0; j < this.controlKnots.length; j++) {
|
for (let j = 0; j < this.controlKnots.length; j++) {
|
||||||
|
|
|
@ -3746,10 +3746,10 @@ tag = "cv44"
|
||||||
rank = 1
|
rank = 1
|
||||||
description = "Standard `t` shape"
|
description = "Standard `t` shape"
|
||||||
selector.t = "standard"
|
selector.t = "standard"
|
||||||
selector."t/phoneticLeft1" = "phoneticLeft"
|
selector."t/phoneticLeft1" = "flatHook"
|
||||||
selector."t/phoneticLeft2" = "phoneticLeft"
|
selector."t/phoneticLeft2" = "flatHook"
|
||||||
selector.tHookTop = "standard"
|
selector.tHookTop = "standard"
|
||||||
selector.tRTail = "retroflexHookBase"
|
selector.tRTail = "flatHook"
|
||||||
selector.tLTail = "standard"
|
selector.tLTail = "standard"
|
||||||
selector."tsLig/upperHalf" = "standard"
|
selector."tsLig/upperHalf" = "standard"
|
||||||
|
|
||||||
|
@ -3757,22 +3757,22 @@ selector."tsLig/upperHalf" = "standard"
|
||||||
rank = 2
|
rank = 2
|
||||||
description = "`t` with flat hook"
|
description = "`t` with flat hook"
|
||||||
selector.t = "flatHook"
|
selector.t = "flatHook"
|
||||||
selector."t/phoneticLeft1" = "phoneticLeft"
|
selector."t/phoneticLeft1" = "flatHook"
|
||||||
selector."t/phoneticLeft2" = "phoneticLeft"
|
selector."t/phoneticLeft2" = "flatHook"
|
||||||
selector.tHookTop = "flatHook"
|
selector.tHookTop = "flatHook"
|
||||||
selector.tRTail = "retroflexHookBase"
|
selector.tRTail = "flatHook"
|
||||||
selector.tLTail = "standard"
|
selector.tLTail = "flatHook"
|
||||||
selector."tsLig/upperHalf" = "standard"
|
selector."tsLig/upperHalf" = "standard"
|
||||||
|
|
||||||
[prime.t.variants.diagonal-tailed]
|
[prime.t.variants.diagonal-tailed]
|
||||||
rank = 3
|
rank = 3
|
||||||
description = "`t` with diagonal tail"
|
description = "`t` with diagonal tail"
|
||||||
selector.t = "diagonalTailed"
|
selector.t = "diagonalTailed"
|
||||||
selector."t/phoneticLeft1" = "phoneticLeft"
|
selector."t/phoneticLeft1" = "flatHook"
|
||||||
selector."t/phoneticLeft2" = "phoneticLeft"
|
selector."t/phoneticLeft2" = "flatHook"
|
||||||
selector.tHookTop = "diagonalTailed"
|
selector.tHookTop = "diagonalTailed"
|
||||||
selector.tRTail = "retroflexHookBase"
|
selector.tRTail = "flatHook"
|
||||||
selector.tLTail = "standard"
|
selector.tLTail = "diagonalTailed"
|
||||||
selector."tsLig/upperHalf" = "standard"
|
selector."tsLig/upperHalf" = "standard"
|
||||||
|
|
||||||
[prime.t.variants.cross]
|
[prime.t.variants.cross]
|
||||||
|
@ -3780,10 +3780,10 @@ rank = 4
|
||||||
description = "Futura-like `t` shape"
|
description = "Futura-like `t` shape"
|
||||||
selector.t = "cross"
|
selector.t = "cross"
|
||||||
selector."t/phoneticLeft1" = "cross"
|
selector."t/phoneticLeft1" = "cross"
|
||||||
selector."t/phoneticLeft2" = "crossPL"
|
selector."t/phoneticLeft2" = "cross"
|
||||||
selector.tHookTop = "cross"
|
selector.tHookTop = "cross"
|
||||||
selector.tRTail = "retroflexHookBase"
|
selector.tRTail = "cross"
|
||||||
selector.tLTail = "standard"
|
selector.tLTail = "cross"
|
||||||
selector."tsLig/upperHalf" = "standard"
|
selector."tsLig/upperHalf" = "standard"
|
||||||
|
|
||||||
[prime.t.variants.hookless-asymmetric]
|
[prime.t.variants.hookless-asymmetric]
|
||||||
|
@ -3791,20 +3791,20 @@ rank = 5
|
||||||
description = "`t` without hook and with ony half the cross bar"
|
description = "`t` without hook and with ony half the cross bar"
|
||||||
selector.t = "hooklessAsymmetric"
|
selector.t = "hooklessAsymmetric"
|
||||||
selector."t/phoneticLeft1" = "hooklessAsymmetric"
|
selector."t/phoneticLeft1" = "hooklessAsymmetric"
|
||||||
selector."t/phoneticLeft2" = "hooklessAsymmetricPL"
|
selector."t/phoneticLeft2" = "hooklessAsymmetric"
|
||||||
selector.tHookTop = "hooklessAsymmetric"
|
selector.tHookTop = "hooklessAsymmetric"
|
||||||
selector.tRTail = "retroflexHookBase"
|
selector.tRTail = "hooklessAsymmetric"
|
||||||
selector.tLTail = "standard"
|
selector.tLTail = "hooklessAsymmetric"
|
||||||
selector."tsLig/upperHalf" = "standard"
|
selector."tsLig/upperHalf" = "standard"
|
||||||
|
|
||||||
[prime.t.variants.standard-short-neck]
|
[prime.t.variants.standard-short-neck]
|
||||||
rank = 6
|
rank = 6
|
||||||
description = "Standard `t` shape with a shorter neck"
|
description = "Standard `t` shape with a shorter neck"
|
||||||
selector.t = "standardShortNeck"
|
selector.t = "standardShortNeck"
|
||||||
selector."t/phoneticLeft1" = "phoneticLeftShortNeck"
|
selector."t/phoneticLeft1" = "flatHookShortNeck"
|
||||||
selector."t/phoneticLeft2" = "phoneticLeftShortNeck"
|
selector."t/phoneticLeft2" = "flatHookShortNeck"
|
||||||
selector.tHookTop = "standard"
|
selector.tHookTop = "standard"
|
||||||
selector.tRTail = "retroflexHookBaseShortNeck"
|
selector.tRTail = "flatHookShortNeck"
|
||||||
selector.tLTail = "standardShortNeck"
|
selector.tLTail = "standardShortNeck"
|
||||||
selector."tsLig/upperHalf" = "standardShortNeck"
|
selector."tsLig/upperHalf" = "standardShortNeck"
|
||||||
|
|
||||||
|
@ -3812,22 +3812,22 @@ selector."tsLig/upperHalf" = "standardShortNeck"
|
||||||
rank = 7
|
rank = 7
|
||||||
description = "`t` with flat hook and a slightly shorter neck"
|
description = "`t` with flat hook and a slightly shorter neck"
|
||||||
selector.t = "flatHookShortNeck"
|
selector.t = "flatHookShortNeck"
|
||||||
selector."t/phoneticLeft1" = "phoneticLeftShortNeck"
|
selector."t/phoneticLeft1" = "flatHookShortNeck"
|
||||||
selector."t/phoneticLeft2" = "phoneticLeftShortNeck"
|
selector."t/phoneticLeft2" = "flatHookShortNeck"
|
||||||
selector.tHookTop = "flatHook"
|
selector.tHookTop = "flatHook"
|
||||||
selector.tRTail = "retroflexHookBaseShortNeck"
|
selector.tRTail = "flatHookShortNeck"
|
||||||
selector.tLTail = "standardShortNeck"
|
selector.tLTail = "flatHookShortNeck"
|
||||||
selector."tsLig/upperHalf" = "standardShortNeck"
|
selector."tsLig/upperHalf" = "standardShortNeck"
|
||||||
|
|
||||||
[prime.t.variants.diagonal-tailed-short-neck]
|
[prime.t.variants.diagonal-tailed-short-neck]
|
||||||
rank = 8
|
rank = 8
|
||||||
description = "`t` with diagonal tail and a shorter neck"
|
description = "`t` with diagonal tail and a shorter neck"
|
||||||
selector.t = "diagonalTailedShortNeck"
|
selector.t = "diagonalTailedShortNeck"
|
||||||
selector."t/phoneticLeft1" = "phoneticLeftShortNeck"
|
selector."t/phoneticLeft1" = "flatHookShortNeck"
|
||||||
selector."t/phoneticLeft2" = "phoneticLeftShortNeck"
|
selector."t/phoneticLeft2" = "flatHookShortNeck"
|
||||||
selector.tHookTop = "diagonalTailed"
|
selector.tHookTop = "diagonalTailed"
|
||||||
selector.tRTail = "retroflexHookBaseShortNeck"
|
selector.tRTail = "flatHookShortNeck"
|
||||||
selector.tLTail = "standardShortNeck"
|
selector.tLTail = "diagonalTailedShortNeck"
|
||||||
selector."tsLig/upperHalf" = "standardShortNeck"
|
selector."tsLig/upperHalf" = "standardShortNeck"
|
||||||
|
|
||||||
[prime.t.variants.cross-short-neck]
|
[prime.t.variants.cross-short-neck]
|
||||||
|
@ -3835,10 +3835,10 @@ rank = 9
|
||||||
description = "Futura-like `t` shape with a shorter neck"
|
description = "Futura-like `t` shape with a shorter neck"
|
||||||
selector.t = "crossShortNeck"
|
selector.t = "crossShortNeck"
|
||||||
selector."t/phoneticLeft1" = "crossShortNeck"
|
selector."t/phoneticLeft1" = "crossShortNeck"
|
||||||
selector."t/phoneticLeft2" = "crossPLShortNeck"
|
selector."t/phoneticLeft2" = "crossShortNeck"
|
||||||
selector.tHookTop = "cross"
|
selector.tHookTop = "cross"
|
||||||
selector.tRTail = "retroflexHookBaseShortNeck"
|
selector.tRTail = "crossShortNeck"
|
||||||
selector.tLTail = "standardShortNeck"
|
selector.tLTail = "crossShortNeck"
|
||||||
selector."tsLig/upperHalf" = "standardShortNeck"
|
selector."tsLig/upperHalf" = "standardShortNeck"
|
||||||
|
|
||||||
[prime.t.variants.hookless-asymmetric-short-neck]
|
[prime.t.variants.hookless-asymmetric-short-neck]
|
||||||
|
@ -3846,20 +3846,20 @@ rank = 10
|
||||||
description = "`t` without hook, with ony half the cross bar and a shorter neck"
|
description = "`t` without hook, with ony half the cross bar and a shorter neck"
|
||||||
selector.t = "hooklessAsymmetricShortNeck"
|
selector.t = "hooklessAsymmetricShortNeck"
|
||||||
selector."t/phoneticLeft1" = "hooklessAsymmetricShortNeck"
|
selector."t/phoneticLeft1" = "hooklessAsymmetricShortNeck"
|
||||||
selector."t/phoneticLeft2" = "hooklessAsymmetricPLShortNeck"
|
selector."t/phoneticLeft2" = "hooklessAsymmetricShortNeck"
|
||||||
selector.tHookTop = "hooklessAsymmetric"
|
selector.tHookTop = "hooklessAsymmetric"
|
||||||
selector.tRTail = "retroflexHookBaseShortNeck"
|
selector.tRTail = "hooklessAsymmetricShortNeck"
|
||||||
selector.tLTail = "standardShortNeck"
|
selector.tLTail = "hooklessAsymmetricShortNeck"
|
||||||
selector."tsLig/upperHalf" = "standardShortNeck"
|
selector."tsLig/upperHalf" = "standardShortNeck"
|
||||||
|
|
||||||
[prime.t.variants.standard-short-neck2]
|
[prime.t.variants.standard-short-neck2]
|
||||||
rank = 11
|
rank = 11
|
||||||
description = "Standard `t` shape with a more shorter neck"
|
description = "Standard `t` shape with a more shorter neck"
|
||||||
selector.t = "standardShortNeck2"
|
selector.t = "standardShortNeck2"
|
||||||
selector."t/phoneticLeft1" = "phoneticLeftShortNeck2"
|
selector."t/phoneticLeft1" = "flatHookShortNeck2"
|
||||||
selector."t/phoneticLeft2" = "phoneticLeftShortNeck2"
|
selector."t/phoneticLeft2" = "flatHookShortNeck2"
|
||||||
selector.tHookTop = "standard"
|
selector.tHookTop = "standard"
|
||||||
selector.tRTail = "retroflexHookBaseShortNeck2"
|
selector.tRTail = "flatHookShortNeck2"
|
||||||
selector.tLTail = "standardShortNeck2"
|
selector.tLTail = "standardShortNeck2"
|
||||||
selector."tsLig/upperHalf" = "standardShortNeck2"
|
selector."tsLig/upperHalf" = "standardShortNeck2"
|
||||||
|
|
||||||
|
@ -3867,22 +3867,22 @@ selector."tsLig/upperHalf" = "standardShortNeck2"
|
||||||
rank = 12
|
rank = 12
|
||||||
description = "`t` with flat hook and a more shorter neck"
|
description = "`t` with flat hook and a more shorter neck"
|
||||||
selector.t = "flatHookShortNeck2"
|
selector.t = "flatHookShortNeck2"
|
||||||
selector."t/phoneticLeft1" = "phoneticLeftShortNeck2"
|
selector."t/phoneticLeft1" = "flatHookShortNeck2"
|
||||||
selector."t/phoneticLeft2" = "phoneticLeftShortNeck2"
|
selector."t/phoneticLeft2" = "flatHookShortNeck2"
|
||||||
selector.tHookTop = "flatHook"
|
selector.tHookTop = "flatHook"
|
||||||
selector.tRTail = "retroflexHookBaseShortNeck2"
|
selector.tRTail = "flatHookShortNeck2"
|
||||||
selector.tLTail = "standardShortNeck2"
|
selector.tLTail = "flatHookShortNeck2"
|
||||||
selector."tsLig/upperHalf" = "standardShortNeck2"
|
selector."tsLig/upperHalf" = "standardShortNeck2"
|
||||||
|
|
||||||
[prime.t.variants.diagonal-tailed-short-neck2]
|
[prime.t.variants.diagonal-tailed-short-neck2]
|
||||||
rank = 13
|
rank = 13
|
||||||
description = "`t` with diagonal tail and a more shorter neck"
|
description = "`t` with diagonal tail and a more shorter neck"
|
||||||
selector.t = "diagonalTailedShortNeck2"
|
selector.t = "diagonalTailedShortNeck2"
|
||||||
selector."t/phoneticLeft1" = "phoneticLeftShortNeck2"
|
selector."t/phoneticLeft1" = "flatHookShortNeck2"
|
||||||
selector."t/phoneticLeft2" = "phoneticLeftShortNeck2"
|
selector."t/phoneticLeft2" = "flatHookShortNeck2"
|
||||||
selector.tHookTop = "diagonalTailed"
|
selector.tHookTop = "diagonalTailed"
|
||||||
selector.tRTail = "retroflexHookBaseShortNeck2"
|
selector.tRTail = "flatHookShortNeck2"
|
||||||
selector.tLTail = "standardShortNeck2"
|
selector.tLTail = "diagonalTailedShortNeck2"
|
||||||
selector."tsLig/upperHalf" = "standardShortNeck2"
|
selector."tsLig/upperHalf" = "standardShortNeck2"
|
||||||
|
|
||||||
[prime.t.variants.cross-short-neck2]
|
[prime.t.variants.cross-short-neck2]
|
||||||
|
@ -3890,10 +3890,10 @@ rank = 14
|
||||||
description = "Futura-like `t` shape with a more shorter neck"
|
description = "Futura-like `t` shape with a more shorter neck"
|
||||||
selector.t = "crossShortNeck2"
|
selector.t = "crossShortNeck2"
|
||||||
selector."t/phoneticLeft1" = "crossShortNeck2"
|
selector."t/phoneticLeft1" = "crossShortNeck2"
|
||||||
selector."t/phoneticLeft2" = "crossPLShortNeck2"
|
selector."t/phoneticLeft2" = "crossShortNeck2"
|
||||||
selector.tHookTop = "cross"
|
selector.tHookTop = "cross"
|
||||||
selector.tRTail = "retroflexHookBaseShortNeck2"
|
selector.tRTail = "crossShortNeck2"
|
||||||
selector.tLTail = "standardShortNeck2"
|
selector.tLTail = "crossShortNeck2"
|
||||||
selector."tsLig/upperHalf" = "standardShortNeck2"
|
selector."tsLig/upperHalf" = "standardShortNeck2"
|
||||||
|
|
||||||
[prime.t.variants.hookless-asymmetric-short-neck2]
|
[prime.t.variants.hookless-asymmetric-short-neck2]
|
||||||
|
@ -3901,10 +3901,10 @@ rank = 15
|
||||||
description = "`t` without hook, with ony half the cross bar and a more shorter neck"
|
description = "`t` without hook, with ony half the cross bar and a more shorter neck"
|
||||||
selector.t = "hooklessAsymmetricShortNeck2"
|
selector.t = "hooklessAsymmetricShortNeck2"
|
||||||
selector."t/phoneticLeft1" = "hooklessAsymmetricShortNeck2"
|
selector."t/phoneticLeft1" = "hooklessAsymmetricShortNeck2"
|
||||||
selector."t/phoneticLeft2" = "hooklessAsymmetricPLShortNeck2"
|
selector."t/phoneticLeft2" = "hooklessAsymmetricShortNeck2"
|
||||||
selector.tHookTop = "hooklessAsymmetric"
|
selector.tHookTop = "hooklessAsymmetric"
|
||||||
selector.tRTail = "retroflexHookBaseShortNeck2"
|
selector.tRTail = "hooklessAsymmetricShortNeck2"
|
||||||
selector.tLTail = "standardShortNeck2"
|
selector.tLTail = "hooklessAsymmetricShortNeck2"
|
||||||
selector."tsLig/upperHalf" = "standardShortNeck2"
|
selector."tsLig/upperHalf" = "standardShortNeck2"
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue