Added /Hwair, /hwair, /latinEta, etc.

This commit is contained in:
be5invis 2015-09-01 22:01:20 +08:00
parent 3a99113fcc
commit caf2d63276
9 changed files with 156 additions and 34 deletions

View File

@ -34,10 +34,12 @@ define customDecompositions (
."\u1D7F" "\u028A\u0336"
."\u0289" "u\u0336"
."\u0244" "U\u0336"
."\u01E5" "g\u0336"
."\u0290" "z\u0322"
."\u0256" "d\u0322"
."\u0273" "n\u0322"
."\u01AE" "T\u0322"
."\u1D91" "\u0257\u0322"
# Cyrillic composite characters

View File

@ -159,12 +159,13 @@ define [xStrand _leftx lefty _rightx righty turn straight tension] : begin {
return : halfXStrand _leftx lefty middlex middley turn straight tension
:.concat : halfXStrand _rightx righty middlex middley turn straight tension
}
define [nShoulderKnots left middle right fine _top _bottom _sma _smb _wide] : begin {
define [nShoulderKnots left _middle right fine _top _bottom _sma _smb _wide] : begin {
local top : fallback _top XH
local bottom : fallback _bottom 0
local sma : fallback _sma SMALLSMOOTHA
local smb : fallback _smb SMALLSMOOTHB
local stroke : fallback _wide STROKE
local middle : fallback _middle [mix [left - stroke * CORRECTION_HX] right 0.5]
return : list {
flat left [top - sma - 2] [widths fine 0]
curl left [top - sma]
@ -282,7 +283,7 @@ define [HBar xleft xright y _fine] : glyph-construction {
}
define [HBarTop xl xr y _fine] : HBar xl xr [y - [fallback _fine STROKE] * 0.5] _fine
define [HBarBottom xl xr y _fine] : HBar xl xr [y + [fallback _fine STROKE] * 0.5] _fine
define [HOverlayBar xleft xright y] : HBar xleft xright y [adviceBlackness 4]
define [HOverlayBar xleft xright y] : HBar xleft xright y [adviceBlackness 4.5]
define [VBar x ydown yup _fine] : glyph-construction {
local fine : [fallback _fine STROKE] / 2
include : create-stroke
@ -314,11 +315,11 @@ define [LegShape xt xb xs top bottom _fine] : glyph-construction {
curl xs [bottom + fine] [heading LEFTWARD]
}
}
define [LeftHook x y] : glyph-construction {
define [LeftHook x y xextend] : glyph-construction {
local fine : adviceBlackness 4.25
include : spiro {
widths.lhs fine
flat [x + 1] y
flat [fallback xextend : x + 1] y
curl x y
archv
g4 [x - fine * 1.5] [y - HOOKX]

View File

@ -462,7 +462,7 @@ create-glyph 'T' : glyph-construction {
set-width WIDTH
assign-unicode 'T'
include capitalMarks
set-anchor 'bottomright' BASE [MIDDLE + HALFSTROKE * CORRECTION_HX] 0
include : create-stroke :.start-from MIDDLE 0 :.heads-to UPWARD :.set-width HALFSTROKE HALFSTROKE
:.line-to MIDDLE CAP :.heads-to UPWARD
include : create-stroke :.start-from SB CAP :.heads-to RIGHTWARD :.set-width 0 STROKE

View File

@ -109,6 +109,8 @@ create-glyph 'g' : glyph-construction {
line-to [RIGHTSB + 0.25 * SB] [XH - STROKE]
line-to MIDDLE [XH - STROKE - O]
line-to MIDDLE XH
set-anchor 'overlay' BASE MIDDLE [mix [DESCENDER + O] groundy 0.53]
}
### c e t
@ -189,22 +191,23 @@ create-glyph 'e' : glyph-construction {
}
}
define [SmallTShape top bot] : glyph-construction {
local center : MIDDLE - TBALANCE + HALFSTROKE
local hookx [center - STROKE * 2 + [WIDTH - SB * 2] * 0.8 - OXHOOK + TAILADJX * globalTransform.yx]
local turn : [mix center hookx 0.5] + CORRECTION_OMIDS - CORRECTION_VS
local center : MIDDLE - TBALANCE - HALFSTROKE
local hookx [center + [WIDTH - SB * 2] * 0.8 - OXHOOK + TAILADJX * globalTransform.yx]
local turn : [mix center hookx 0.5] + CORRECTION_OMIDS
local smb : [turn - center] * 1.2
include : spiro {
widths.rhs
widths.lhs
flat center top [heading DOWNWARD]
curl center [bot + smb + STROKE]
arcvh
g4 turn [bot + O + STROKE]
curl center [bot + smb]
arcvh 6
g4 turn [bot + O]
quadcontrols [KAPPA_HOOK + 0.75 * globalTransform.yx + 0.1] 0
g4 hookx [bot + HOOK + STROKE * 0.24]
g4 hookx [bot + HOOK]
}
set-anchor 'bottomright' BASE hookx [bot + HOOK]
include : HBarTop [center - HALFSTROKE - LONGJUT + TBALANCE2] [center - HALFSTROKE + LONGJUT + TBALANCE2] [top * XH / CAP]
include : HBarTop [center + HALFSTROKE - LONGJUT + TBALANCE2] [center + HALFSTROKE + LONGJUT + TBALANCE2] XH
}
create-glyph 't' : glyph-construction {
set-width WIDTH
@ -295,21 +298,19 @@ create-glyph 'h' : glyph-construction {
:.line-to SB CAP
:.heads-to UPWARD
}
define [SmallMShape top bot] : glyph-construction {
local m1 : mix [SB + O] [MIDDLE + MVERTSTROKE / 2 * CORRECTION_HX] 0.5
local m2 : mix [RIGHTSB - O] [MIDDLE - MVERTSTROKE / 2 * CORRECTION_HX] 0.5
include : mShoulderSpiro [SB + O + MVERTSTROKE * CORRECTION_HX] [MIDDLE + MVERTSTROKE / 2 * CORRECTION_HX] top bot MVERTSTROKE [MVERTSTROKE * 0.4]
include : mShoulderSpiro [MIDDLE + MVERTSTROKE * 0.5 * CORRECTION_HX] [RIGHTSB - O] top bot MVERTSTROKE [MVERTSTROKE * 0.8]
include : VBarLeft [SB + O] bot top MVERTSTROKE
}
create-glyph 'm' : glyph-construction {
set-width WIDTH
assign-unicode 'm'
include eMarks
local m1 : mix [SB + O] [MIDDLE + MVERTSTROKE / 2 * CORRECTION_HX] 0.5
local m2 : mix [RIGHTSB - O] [MIDDLE - MVERTSTROKE / 2 * CORRECTION_HX] 0.5
include : mShoulderSpiro [SB + O + MVERTSTROKE * CORRECTION_HX] [MIDDLE + MVERTSTROKE / 2 * CORRECTION_HX] XH 0 MVERTSTROKE [MVERTSTROKE * 0.4]
include : mShoulderSpiro [MIDDLE + MVERTSTROKE * 0.5 * CORRECTION_HX] [RIGHTSB - O] XH 0 MVERTSTROKE [MVERTSTROKE * 0.8]
include : create-stroke
:.start-from [SB + O] 0
:.heads-to UPWARD
:.set-width 0 MVERTSTROKE
:.line-to [SB + O] XH
:.heads-to UPWARD
include : SmallMShape XH 0
}
### i j l

View File

@ -386,6 +386,33 @@ create-glyph 'ij' : glyph-construction {
apply-transform : Translate [RIGHTSB - SB * 0.5 - MIDDLE - JBALANCE - HALFSTROKE * CORRECTION_HX] 0
}
}
create-glyph 'Hwair' : glyph-construction {
assign-unicode 0x1F6
include : VBarLeft [SB + O] 0 CAP MVERTSTROKE
include : HBar SB MIDDLE [CAP / 2]
include : spiro {
widths.lhs MVERTSTROKE
flat [MIDDLE - MVERTSTROKE * 0.5 * CORRECTION_HX] CAP [heading DOWNWARD]
curl [MIDDLE - MVERTSTROKE * 0.5 * CORRECTION_HX] [SMALLSMOOTHA * 0.6]
arcvh
g4 [mix [MIDDLE - MVERTSTROKE * 0.5 * CORRECTION_HX] [RIGHTSB - O] 0.5] O [heading RIGHTWARD]
archv
flat [RIGHTSB - O] [SMALLSMOOTHA * 0.6]
curl [RIGHTSB - O] XH [heading UPWARD]
}
}
create-glyph 'hwair' : glyph-construction {
assign-unicode 0x195
include : VBarLeft [SB + O] 0 CAP MVERTSTROKE
include : spiro {
nShoulderKnots [SB + O + MVERTSTROKE * CORRECTION_HX] nothing [MIDDLE + MVERTSTROKE * 0.5 * CORRECTION_HX] [MVERTSTROKE * 0.4] nothing [SMALLSMOOTHB * 0.6] [SMALLSMOOTHA * 0.6] [SMALLSMOOTHB * 0.6] MVERTSTROKE
arcvh
g4 [mix [MIDDLE - MVERTSTROKE * 0.5 * CORRECTION_HX] [RIGHTSB - O] 0.5] O [widths.heading MVERTSTROKE 0 RIGHTWARD]
archv
flat [RIGHTSB - O] [SMALLSMOOTHA * 0.6]
curl [RIGHTSB - O] XH [heading UPWARD]
}
}
create-glyph 'scripta' : glyph-construction {
assign-unicode 0x0251
@ -565,6 +592,15 @@ create-glyph 'closeomega' : glyph-construction {
curl [MIDDLE - fine / 2] y4 [heading UPWARD]
}
}
create-glyph 'latinEta' : glyph-construction {
assign-unicode 0x220
include ifMarks
set-anchor 'lf' BASE [SB + HALFSTROKE] 0
include : nShoulder [SB + STROKE] MIDDLE RIGHTSB [STROKE * 0.3] CAP DESCENDER SMALLSMOOTHA SMALLSMOOTHB
include : VBar [SB + HALFSTROKE * CORRECTION_HX] 0 CAP
}
#
create-glyph 'strenchedC' : glyph-construction {
set-width WIDTH
assign-unicode 0x297
@ -800,7 +836,12 @@ turned 'turndelta' 0x18D 'delta' MIDDLE [XH / 2] pMarks
turned 'latinUpsilon1' 0x1B1 'Omega' MIDDLE [CAP / 2]
turned 'closeepsilon' 0x29A 'closeturnepsilon' MIDDLE [XH / 2]
turned 'invglottalstop' 0x296 'revglottalstop' MIDDLE [CAP / 2]
create-glyph 'capitalTurnm' : glyph-construction {
assign-unicode 0x19C
include capitalMarks
include : SmallMShape CAP 0
include : FlipAround MIDDLE [CAP / 2]
}
# compatibility ligatures

View File

@ -45,7 +45,24 @@ create-glyph 'lslash' : glyph-construction {
:.set-width fine fine
:.line-to [middlex + LONGJUT * 0.8] [middle + LONGJUT * 0.4]
}
create-glyph 'lambdaslash' : glyph-construction {
assign-unicode 0x19B
include glyphs.lambda AS_BASE
local fine : 0.5 * [adviceBlackness 5]
local middle : mix 0 CAP 0.7
local middlex [tp [Upright] glyphs.l.anchors.above].x
include : create-stroke
:.start-from [middlex - LONGJUT * 0.8] [middle - LONGJUT * 0.4]
:.set-width fine fine
:.line-to [middlex + LONGJUT * 0.8] [middle + LONGJUT * 0.4]
}
# Barred
create-glyph 'Gbar' : glyph-construction {
assign-unicode 0x1E4
include glyphs.G AS_BASE
include : HOverlayBar [mix SB RIGHTSB 0.5] [mix RIGHTSB WIDTH 0.7] [mix 0 CAPMIDDLE 0.55]
}
create-glyph 'Hbar' : glyph-construction {
assign-unicode 0x126
@ -82,6 +99,11 @@ create-glyph 'tbar' : glyph-construction {
include glyphs.t AS_BASE
include : HOverlayBar [[mix MIDDLE SB 0.7] - TBALANCE * 0.5] [[mix MIDDLE RIGHTSB 0.7] - TBALANCE * 0.5] [mix 0 XH 0.6]
}
create-glyph 'Lbar' : glyph-construction {
assign-unicode 0x23D
include glyphs.L AS_BASE
include : HOverlayBar [SB * 0.3] [mix [SB + STROKE] [RIGHTSB - STROKE] 0.55] [CAP * BARPOS]
}
create-glyph 'Cbar' : glyph-construction {
assign-unicode 0xA792
include glyphs.C AS_BASE
@ -176,6 +198,13 @@ create-glyph 'Phookleft' : glyph-construction {
include glyphs.P AS_BASE
include : LeftHook [SB * 1.25] CAP
}
create-glyph 'Thookleft' : glyph-construction {
assign-unicode 0x1AC
include capitalMarks
include : LeftHook [SB + [adviceBlackness 4.25] * 1.5] CAP MIDDLE
include : HBarTop MIDDLE RIGHTSB CAP
include : VBar MIDDLE 0 CAP
}
# Hooktop
define [HooktopLeftBar stroke bottom] : glyph-construction {
include : spiro {
@ -209,12 +238,25 @@ create-glyph 'scriptghooktop' : glyph-construction {
include glyphs.scriptg AS_BASE
include : VerticalHook [RIGHTSB - HALFSTROKE * CORRECTION_HX] XH HOOKX [-HOOK]
}
create-glyph 'thooktop' : glyph-construction {
assign-unicode 0x1AD
include eMarks
include : SmallTShape [XH - HALFSTROKE] 0
include : VerticalHook [MIDDLE - TBALANCE] XH HOOKX [-HOOK]
}
create-glyph 'dhooktop' : glyph-construction {
assign-unicode 0x257
include bMarks
include glyphs.'a.italic'
include : VerticalHook [RIGHTSB - HALFSTROKE * CORRECTION_HX] XH HOOKX [-HOOK]
}
create-glyph 'qhooktop' : glyph-construction {
assign-unicode 0x2A0
include pMarks
include glyphs.'a.italic'
include : VerticalHook [RIGHTSB - HALFSTROKE * CORRECTION_HX] XH HOOKX [-HOOK]
include : VBarRight RIGHTSB DESCENDER 0
}
create-glyph 'Chooktop' : glyph-construction {
assign-unicode 0x187
include glyphs.C AS_BASE
@ -341,6 +383,18 @@ create-glyph 'nltail' : glyph-construction {
include glyphs.n AS_BASE
include : VerticalHook [SB + HALFSTROKE * CORRECTION_HX] 0 [-HOOKX] HOOK
}
create-glyph 'tltail' : glyph-construction {
assign-unicode 0x1AB
include ifMarks
include glyphs.t
include : VBarRight glyphs.t.anchors.bottomright.x 0 glyphs.t.anchors.bottomright.y
include : VerticalHook [glyphs.t.anchors.bottomright.x - HALFSTROKE * CORRECTION_HX] 0 [-HOOKX] HOOK
}
create-glyph 'Nltail' : glyph-construction {
assign-unicode 0x19D
include glyphs.N AS_BASE
include : VerticalHook [SB + HALFSTROKE * CORRECTION_HX] 0 [-HOOKX] HOOK
}
create-glyph 'mltail' : glyph-construction {
assign-unicode 0x271
include pMarks
@ -420,6 +474,17 @@ create-glyph 'ezhtail' : glyph-construction {
:.arc-vh-to [mix SB RIGHTSB 0.4] [DESCENDER + STROKE]
:.line-to RIGHTSB [DESCENDER + STROKE]
}
# Downward tail
create-glyph 'Zdowntail' : glyph-construction {
assign-unicode 0x224
include glyphs.Z AS_BASE
include : VBarRight [mix SB RIGHTSB 1.05] [HALFSTROKE - LONGJUT] STROKE
}
create-glyph 'zdowntail' : glyph-construction {
assign-unicode 0x225
include glyphs.z AS_BASE
include : VBarRight [mix SB RIGHTSB 1.05] [HALFSTROKE - LONGJUT] STROKE
}
# Curly tail
define [CurlyTail fine rinner m1 bottom _right x2 y2] : begin {
local right : _right - fine * [if [_right > m1] 1 [-1]]

View File

@ -700,6 +700,14 @@ create-glyph 'rtailBR' : glyph-construction {
include : VBarRight 0 0 [-O]
include : VerticalHook [- HALFSTROKE * CORRECTION_HX] 0 HOOKX HOOK
}
create-glyph 'ltailBR' : glyph-construction {
set-width 0
assign-unicode 0x321
set-anchor 'bottomright' MARK 0 0 0 belowMarkBot
include : VBarRight 0 0 [-O]
include : VerticalHook [- HALFSTROKE * CORRECTION_HX] 0 [-HOOKX] HOOK
}
# Overlay Marks
create-glyph 'tildeOver' : glyph-construction {
set-width 0

View File

@ -47,7 +47,7 @@ $(FEATURE) : $(OBJDIR)/.pass0-%.fea : $(OBJDIR)/.pass0-%.ab.fea features/common.
# Pass 1 : Outline cleanup and merge
$(PASS1) : $(OBJDIR)/.pass1-%.ttf : pass1-cleanup.py $(OBJDIR)/.pass0-%.ttf
fontforge -quiet -script $^ $@ $(SUPPRESS_ERRORS)
fontforge -quiet -script $^ $@ $(FAST) $(SUPPRESS_ERRORS)
$(PASS2) : $(OBJDIR)/.pass2-%.ttf : pass2-smartround.js $(OBJDIR)/.pass1-%.ttf
node $^ $@ --upm $(TARGETUPM)
$(PASS3) : $(OBJDIR)/.pass3-%.ttf : pass3-features.py $(OBJDIR)/.pass2-%.ttf $(OBJDIR)/.pass0-%.fea

View File

@ -6,13 +6,16 @@ import sys
source = sys.argv[1]
font = fontforge.open(source)
print sys.argv
# Replace accented characters into references
print "Reference finding: ", font.fontname
font.selection.select(("ranges", "unicode", None), 0x1FCD, 0x1FCF, 0x1FDD, 0x1FDF)
font.replaceWithReference(2)
font.selection.all()
font.selection.select(("less", None), "I.straight", "dotlessi.straight", "l.straight", "rtailBR")
font.replaceWithReference(2)
if len(sys.argv) <= 3:
print "Reference finding: ", font.fontname
font.selection.select(("ranges", "unicode", None), 0x1FCD, 0x1FCF, 0x1FDD, 0x1FDF)
font.replaceWithReference(2)
font.selection.all()
font.selection.select(("less", None), "I.straight", "dotlessi.straight", "l.straight", "ltailBR", "rtailBR")
font.replaceWithReference(2)
# Remove overlapped area
print "Overlap Removal: ", font.fontname
@ -25,8 +28,9 @@ for i in font:
if len(glyph.references) > 0 and len(glyph.layers["Fore"]) > 0: # a mixed glyph
glyph.unlinkRef()
glyph.removeOverlap()
font.selection.all()
font.replaceWithReference(2)
if len(sys.argv) <= 3:
font.selection.all()
font.replaceWithReference(2)
# Outline simplify
print "Simplify, pass 1: ", font.fontname