From: Sungsit Sawaiwan Date: Wed, 11 Nov 2015 20:06:34 +0000 (+0700) Subject: Fix Nighahit, subs & sups issues X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F2%2Fhead;p=thirdparty%2Fprompt.git Fix Nighahit, subs & sups issues --- diff --git a/.gitignore b/.gitignore index 5df1b9b..924889b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ .sass-cache +*.zip +*.bak diff --git a/features.html b/features.html index 861e975..466db2a 100644 --- a/features.html +++ b/features.html @@ -68,7 +68,8 @@

ภาษาไทย (Standard Thai)

-

ฝุ่นน้ำท้องฟ้า ทุ่งหญ้าป้ำเป๋อ ชนชั้นกระฎุมพี เป่าปี่กตัญญู

+

พี่ป๋ำฎูนู๋น้ำเป่าฝุ่นหญู่ก้นปี่

+

ฝุ่นน้ำท้องฟ้า ทุ่งหญ้าป้ำเป๋อ ชนชั้นกระฎุมพี เป่าปี่กตัญญู ดูนาฬิกาซ้ำซ้อน

diff --git a/font/Prompt-Black.otf b/font/Prompt-Black.otf index 153cf8e..05c76fd 100644 Binary files a/font/Prompt-Black.otf and b/font/Prompt-Black.otf differ diff --git a/font/Prompt-Black.ttf b/font/Prompt-Black.ttf index 92c7f30..ada561a 100644 Binary files a/font/Prompt-Black.ttf and b/font/Prompt-Black.ttf differ diff --git a/font/Prompt-BlackItalic.otf b/font/Prompt-BlackItalic.otf index 5ad7f78..588ad5a 100644 Binary files a/font/Prompt-BlackItalic.otf and b/font/Prompt-BlackItalic.otf differ diff --git a/font/Prompt-BlackItalic.ttf b/font/Prompt-BlackItalic.ttf index 18756a9..6ae8bb2 100644 Binary files a/font/Prompt-BlackItalic.ttf and b/font/Prompt-BlackItalic.ttf differ diff --git a/font/Prompt-Bold.otf b/font/Prompt-Bold.otf index 6c83245..4018143 100644 Binary files a/font/Prompt-Bold.otf and b/font/Prompt-Bold.otf differ diff --git a/font/Prompt-Bold.ttf b/font/Prompt-Bold.ttf index 117103d..4c1ad24 100644 Binary files a/font/Prompt-Bold.ttf and b/font/Prompt-Bold.ttf differ diff --git a/font/Prompt-BoldItalic.otf b/font/Prompt-BoldItalic.otf index 2006c1a..7083ee2 100644 Binary files a/font/Prompt-BoldItalic.otf and b/font/Prompt-BoldItalic.otf differ diff --git a/font/Prompt-BoldItalic.ttf b/font/Prompt-BoldItalic.ttf index 62a2f81..cbec69a 100644 Binary files a/font/Prompt-BoldItalic.ttf and b/font/Prompt-BoldItalic.ttf differ diff --git a/font/Prompt-ExtraBold.otf b/font/Prompt-ExtraBold.otf index 19eb12d..3b6fd18 100644 Binary files a/font/Prompt-ExtraBold.otf and b/font/Prompt-ExtraBold.otf differ diff --git a/font/Prompt-ExtraBold.ttf b/font/Prompt-ExtraBold.ttf index ce5d0ed..d8ac161 100644 Binary files a/font/Prompt-ExtraBold.ttf and b/font/Prompt-ExtraBold.ttf differ diff --git a/font/Prompt-ExtraBoldItalic.otf b/font/Prompt-ExtraBoldItalic.otf index 534be8d..8d5c3d6 100644 Binary files a/font/Prompt-ExtraBoldItalic.otf and b/font/Prompt-ExtraBoldItalic.otf differ diff --git a/font/Prompt-ExtraBoldItalic.ttf b/font/Prompt-ExtraBoldItalic.ttf index 3c8d53b..4050487 100644 Binary files a/font/Prompt-ExtraBoldItalic.ttf and b/font/Prompt-ExtraBoldItalic.ttf differ diff --git a/font/Prompt-ExtraLight.otf b/font/Prompt-ExtraLight.otf index 05a6232..e79fcb5 100644 Binary files a/font/Prompt-ExtraLight.otf and b/font/Prompt-ExtraLight.otf differ diff --git a/font/Prompt-ExtraLight.ttf b/font/Prompt-ExtraLight.ttf index 26b11f9..73fc16c 100644 Binary files a/font/Prompt-ExtraLight.ttf and b/font/Prompt-ExtraLight.ttf differ diff --git a/font/Prompt-ExtraLightItalic.otf b/font/Prompt-ExtraLightItalic.otf index d1a95b8..d1bc690 100644 Binary files a/font/Prompt-ExtraLightItalic.otf and b/font/Prompt-ExtraLightItalic.otf differ diff --git a/font/Prompt-ExtraLightItalic.ttf b/font/Prompt-ExtraLightItalic.ttf index 840dd14..f16ed3e 100644 Binary files a/font/Prompt-ExtraLightItalic.ttf and b/font/Prompt-ExtraLightItalic.ttf differ diff --git a/font/Prompt-Italic.otf b/font/Prompt-Italic.otf index 8ccd1ce..aa13534 100644 Binary files a/font/Prompt-Italic.otf and b/font/Prompt-Italic.otf differ diff --git a/font/Prompt-Italic.ttf b/font/Prompt-Italic.ttf index f7420e1..ef9eea3 100644 Binary files a/font/Prompt-Italic.ttf and b/font/Prompt-Italic.ttf differ diff --git a/font/Prompt-Light.otf b/font/Prompt-Light.otf index b3ce1bc..2186215 100644 Binary files a/font/Prompt-Light.otf and b/font/Prompt-Light.otf differ diff --git a/font/Prompt-Light.ttf b/font/Prompt-Light.ttf index 882a95f..7459433 100644 Binary files a/font/Prompt-Light.ttf and b/font/Prompt-Light.ttf differ diff --git a/font/Prompt-LightItalic.otf b/font/Prompt-LightItalic.otf index ea3530c..35e110b 100644 Binary files a/font/Prompt-LightItalic.otf and b/font/Prompt-LightItalic.otf differ diff --git a/font/Prompt-LightItalic.ttf b/font/Prompt-LightItalic.ttf index 752c019..285b6eb 100644 Binary files a/font/Prompt-LightItalic.ttf and b/font/Prompt-LightItalic.ttf differ diff --git a/font/Prompt-Medium.otf b/font/Prompt-Medium.otf index 948bd0b..b784dd3 100644 Binary files a/font/Prompt-Medium.otf and b/font/Prompt-Medium.otf differ diff --git a/font/Prompt-Medium.ttf b/font/Prompt-Medium.ttf index 4c4794a..0b3dbd4 100644 Binary files a/font/Prompt-Medium.ttf and b/font/Prompt-Medium.ttf differ diff --git a/font/Prompt-MediumItalic.otf b/font/Prompt-MediumItalic.otf index b478fdd..931a945 100644 Binary files a/font/Prompt-MediumItalic.otf and b/font/Prompt-MediumItalic.otf differ diff --git a/font/Prompt-MediumItalic.ttf b/font/Prompt-MediumItalic.ttf index 4f44940..e8ce8f6 100644 Binary files a/font/Prompt-MediumItalic.ttf and b/font/Prompt-MediumItalic.ttf differ diff --git a/font/Prompt-Regular.otf b/font/Prompt-Regular.otf index a41a391..fe45e37 100644 Binary files a/font/Prompt-Regular.otf and b/font/Prompt-Regular.otf differ diff --git a/font/Prompt-Regular.ttf b/font/Prompt-Regular.ttf index fb1e816..73a055d 100644 Binary files a/font/Prompt-Regular.ttf and b/font/Prompt-Regular.ttf differ diff --git a/font/Prompt-SemiBold.otf b/font/Prompt-SemiBold.otf index 2fff006..c0b74a0 100644 Binary files a/font/Prompt-SemiBold.otf and b/font/Prompt-SemiBold.otf differ diff --git a/font/Prompt-SemiBold.ttf b/font/Prompt-SemiBold.ttf index 08d4ffc..7ffa1e9 100644 Binary files a/font/Prompt-SemiBold.ttf and b/font/Prompt-SemiBold.ttf differ diff --git a/font/Prompt-SemiBoldItalic.otf b/font/Prompt-SemiBoldItalic.otf index 09d10c5..0edf84d 100644 Binary files a/font/Prompt-SemiBoldItalic.otf and b/font/Prompt-SemiBoldItalic.otf differ diff --git a/font/Prompt-SemiBoldItalic.ttf b/font/Prompt-SemiBoldItalic.ttf index 4da9221..920a746 100644 Binary files a/font/Prompt-SemiBoldItalic.ttf and b/font/Prompt-SemiBoldItalic.ttf differ diff --git a/font/Prompt-Thin.otf b/font/Prompt-Thin.otf index 9201503..78c2dfe 100644 Binary files a/font/Prompt-Thin.otf and b/font/Prompt-Thin.otf differ diff --git a/font/Prompt-Thin.ttf b/font/Prompt-Thin.ttf index ca11eeb..f9d36fe 100644 Binary files a/font/Prompt-Thin.ttf and b/font/Prompt-Thin.ttf differ diff --git a/font/Prompt-ThinItalic.otf b/font/Prompt-ThinItalic.otf index 6719542..0ff4310 100644 Binary files a/font/Prompt-ThinItalic.otf and b/font/Prompt-ThinItalic.otf differ diff --git a/font/Prompt-ThinItalic.ttf b/font/Prompt-ThinItalic.ttf index 9396bd2..367fe17 100644 Binary files a/font/Prompt-ThinItalic.ttf and b/font/Prompt-ThinItalic.ttf differ diff --git a/patch/gsub.fea b/patch/gsub.fea new file mode 100644 index 0000000..5faeb1b --- /dev/null +++ b/patch/gsub.fea @@ -0,0 +1,180 @@ +languagesystem DFLT dflt; +languagesystem latn CAT ; +languagesystem latn dflt; +languagesystem latn MOL ; +languagesystem latn ROM ; +languagesystem thai dflt; +languagesystem thai PAL; +languagesystem thai SAN; + +# +# CadsonDemak origin features +# +lookup aaltAccessAllAlternateslookup0 { + lookupflag 0; + sub \A by \ordfeminine ; + sub \O by \ordmasculine ; + sub \Scedilla by \Scommaaccent ; + sub \uni0162 by \uni021A ; + sub \a by \ordfeminine ; + sub \i by \dotlessi ; + sub \j by \uni0237 ; + sub \o by \ordmasculine ; + sub \scedilla by \scommaaccent ; + sub \uni0163 by \uni021B ; + sub \uni0E24 by \uni0E24.short ; + sub \uni0E26 by \uni0E26.short ; + sub \uni0E0E by \doChadathai.short ; + sub \uni0E0F by \toPatakthai.short ; + sub \uni0E0D by \yoYingthai.less ; + sub \uni0E10 by \thoThanthai.less ; + sub \uni0E2C by \loChulathai.short ; + sub \one by \uni00B9 ; + sub \two by \uni00B2 ; + sub \three by \uni00B3 ; + sub \uni0E31 by \uni0E31.narrow ; + sub \uni0E47 by \uni0E47.narrow ; + sub \uni0E34 by \uni0E34.narrow ; + sub \uni0E35 by \uni0E35.narrow ; + sub \uni0E36 by \uni0E36.narrow ; + sub \uni0E37 by \uni0E37.narrow ; + sub \uni0E4D by \uni0E4D.narrow ; + sub \uni0E3A by \uni0E3A.small ; + sub \uni0E38 by \uni0E38.small ; + sub \uni0E39 by \uni0E39.small ; +} aaltAccessAllAlternateslookup0; + +lookup aaltAccessAllAlternateslookup1 { + lookupflag 0; + sub \parenleft from [\uni208D \uni207D ]; + sub \parenright from [\uni208E \uni207E ]; + sub \uni0E48 from [\uni0E48.small \uni0E48.narrow ]; + sub \uni0E49 from [\uni0E49.small \uni0E49.narrow ]; + sub \uni0E4A from [\uni0E4A.small \uni0E4A.narrow ]; + sub \uni0E4B from [\uni0E4B.small \uni0E4B.narrow ]; + sub \uni0E4C from [\uni0E4C.small \uni0E4C.narrow ]; +} aaltAccessAllAlternateslookup1; + +lookup SingleSubstitutionlookup13 { + lookupflag 0; + sub \i by \dotlessi ; + sub \j by \uni0237 ; + sub \uni0E24 by \uni0E24.short ; + sub \uni0E26 by \uni0E26.short ; + sub \uni0E0E by \doChadathai.short ; + sub \uni0E0F by \toPatakthai.short ; + sub \uni0E0D by \yoYingthai.less ; + sub \uni0E10 by \thoThanthai.less ; + sub \uni0E2C by \loChulathai.short ; + sub \uni0E48 by \uni0E48.small ; + sub \uni0E49 by \uni0E49.small ; + sub \uni0E4A by \uni0E4A.small ; + sub \uni0E4B by \uni0E4B.small ; + sub \uni0E4C by \uni0E4C.small ; + sub \uni0E3A by \uni0E3A.small ; + sub \uni0E38 by \uni0E38.small ; + sub \uni0E39 by \uni0E39.small ; +} SingleSubstitutionlookup13; + +lookup ccmpGlyphCompositionDecompositi { + lookupflag 0; + sub [\i \j ]'lookup SingleSubstitutionlookup13 [\uni0308 \uni0307 \gravecomb \acutecomb \uni030B \uni0302 \uni030C \uni0306 + \uni030A \tildecomb \uni0304 \hookabovecomb ] ; + sub [\i \j ]'lookup SingleSubstitutionlookup13 [\uni031B \dotbelowcomb \uni0324 \uni0327 \uni0328 \uni032E \uni0331 ] [\uni0308 \uni0307 \gravecomb \acutecomb \uni030B \uni0302 \uni030C \uni0306 + \uni030A \tildecomb \uni0304 \hookabovecomb ] ; +} ccmpGlyphCompositionDecompositi; + +lookup loclLocalizedFormsinLatinlookup { + lookupflag 0; + sub \Scedilla by \Scommaaccent ; + sub \uni0162 by \uni021A ; + sub \scedilla by \scommaaccent ; + sub \uni0163 by \uni021B ; +} loclLocalizedFormsinLatinlookup; + +lookup sub_single_locllatn_0 { + lookupflag 0; + sub \Scedilla by \Scommaaccent ; + sub \uni0162 by \uni021A ; + sub \scedilla by \scommaaccent ; + sub \uni0163 by \uni021B ; +} sub_single_locllatn_0; + +lookup LigatureSubstitutionlookup17 { + lookupflag 0; + sub \L \periodcentered by \Ldot; + sub \l \periodcentered by \ldot; +} LigatureSubstitutionlookup17; + +lookup sub_chain_locllatn_0 { + lookupflag 0; + sub [\l ]'lookup LigatureSubstitutionlookup17 [\periodcentered ]'lookup LigatureSubstitutionlookup17 [\l ] ; + sub [\L ]'lookup LigatureSubstitutionlookup17 [\periodcentered ]'lookup LigatureSubstitutionlookup17 [\L ] ; +} sub_chain_locllatn_0; + +lookup fracDiagonalFractionslookup10 { + lookupflag 0; + sub \one \slash \two by \onehalf; + sub \one \slash \three by \uni2153; + sub \two \slash \three by \uni2154; + sub \one \slash \four by \onequarter; + sub \three \slash \four by \threequarters; + sub \one \slash \eight by \oneeighth; + sub \three \slash \eight by \threeeighths; + sub \five \slash \eight by \fiveeighths; + sub \seven \slash \eight by \seveneighths; +} fracDiagonalFractionslookup10; + +lookup SingleSubstitutionlookup18 { + lookupflag 0; + sub \A by \ordfeminine ; + sub \O by \ordmasculine ; + sub \a by \ordfeminine ; + sub \o by \ordmasculine ; +} SingleSubstitutionlookup18; + +lookup ordnOrdinalslookup11 { + lookupflag 0; + sub [\zero \one \two \three \four \five \six \seven \eight \nine ] [\A \a ]'lookup SingleSubstitutionlookup18 ; + sub [\zero \one \two \three \four \five \six \seven \eight \nine ] [\O \o ]'lookup SingleSubstitutionlookup18 ; +} ordnOrdinalslookup11; + +lookup ligaStandardLigatureslookup12 { + lookupflag 0; + sub \f \i by \fi; + sub \f \l by \fl; + sub \uni0E24 \uni0E45 by \ru_lakkhangyaothai; + sub \uni0E26 \uni0E45 by \lu_lakkhangyaothai; +} ligaStandardLigatureslookup12; + + +feature aalt { + lookup aaltAccessAllAlternateslookup0; + lookup aaltAccessAllAlternateslookup1; +} aalt; + +feature locl { + script latn; + language CAT exclude_dflt; + lookup sub_chain_locllatn_0; + language MOL exclude_dflt; + lookup sub_single_locllatn_0; + language ROM exclude_dflt; + lookup loclLocalizedFormsinLatinlookup; +} locl; + +feature ccmp { + lookup ccmpGlyphCompositionDecompositi; +} ccmp; + +feature frac { + lookup fracDiagonalFractionslookup10; +} frac; + +feature ordn { + lookup ordnOrdinalslookup11; +} ordn; + +feature liga { + lookup ligaStandardLigatureslookup12; +} liga; diff --git a/patch/patch.fea b/patch/patch.fea new file mode 100644 index 0000000..201b794 --- /dev/null +++ b/patch/patch.fea @@ -0,0 +1,159 @@ +languagesystem DFLT dflt; +languagesystem latn CAT ; +languagesystem latn dflt; +languagesystem latn MOL ; +languagesystem latn ROM ; +languagesystem thai dflt; +languagesystem thai PAL; +languagesystem thai SAN; + +include(gsub.fea) + +# +# Patch +# + +# +# Thai global classes +# + +# Normal (baseline) consonants +@NC = [ uni0E01 uni0E02 uni0E03 uni0E04 uni0E05 uni0E06 uni0E07 uni0E08 uni0E09 uni0E0A uni0E0B uni0E0C uni0E11 uni0E12 uni0E13 uni0E14 uni0E15 uni0E16 uni0E17 uni0E18 uni0E19 uni0E1A uni0E1C uni0E1E uni0E20 uni0E21 uni0E22 uni0E23 uni0E24 uni0E25 uni0E26 uni0E27 uni0E28 uni0E29 uni0E2A uni0E2B uni0E2C uni0E2D uni0E2E uni0E2F ]; + +# Ascender consonants (ป, ฝ, & ฟ) +@AC = [ uni0E1B uni0E1D uni0E1F ]; + +lookup Thai0E2C.alt { + sub uni0E2C by loChulathai.short; +} Thai0E2C.alt; + +# Strict Descender consonants (ฎ, ฏ) +@DC = [ uni0E0E uni0E0F uni0E24 uni0E26 ]; +@DC.short = [ doChadathai.short toPatakthai.short uni0E24.short uni0E26.short ]; + +lookup ThaiDC.alt { + lookupflag 0; + sub @DC by @DC.short; +} ThaiDC.alt; + +# Removable descender consonants (ญ, ฐ) +@RC = [ uni0E0D uni0E10 ]; +@RC.rd = [ yoYingthai.less thoThanthai.less ]; + +lookup ThaiRC.rd { + sub @RC by @RC.rd; +} ThaiRC.rd; + +@BASE = [ @NC @DC @RC @RC.rd ]; + +# Below vowel/diacritic +@BV = [ uni0E38 uni0E39 uni0E3A ]; +@BV.sd = [ uni0E38.small uni0E39.small uni0E3A.small ]; + +lookup ThaiBV.sd { + sub @BV by @BV.sd; +} ThaiBV.sd; + +# Above vowel/diacritic +@AV = [ uni0E31 uni0E34 uni0E35 uni0E36 uni0E37 uni0E47 uni0E4D ]; +@AV.sl = [ uni0E31.narrow uni0E34.narrow uni0E35.narrow uni0E36.narrow uni0E37.narrow uni0E47.narrow uni0E4D.narrow ]; + +# Above tone/diacritic +@T = [ uni0E48.small uni0E49.small uni0E4A.small uni0E4B.small uni0E4C.small ]; +@T.sd = [ uni0E48 uni0E49 uni0E4A uni0E4B uni0E4C ]; +@T.sdl = [ uni0E48.narrow uni0E49.narrow uni0E4A.narrow uni0E4B.narrow uni0E4C.narrow ]; + +# Sara Am +lookup ThaiDecomp { + lookupflag 0; + sub uni0E33 by uni0E4D uni0E32 ; +} ThaiDecomp; + +lookup ThaiDecomp.narrow { + lookupflag 0; + sub uni0E33 by uni0E4D.narrow uni0E32 ; +} ThaiDecomp.narrow; + +lookup ThaiSaraAmLakkhang { + lookupflag 0; + sub uni0E33 by uni0E32 ; +} ThaiSaraAmLakkhang; + +lookup ThaiTone.0E4D { + lookupflag 0; + sub uni0E48 by uni0E4D uni0E48.small ; + sub uni0E49 by uni0E4D uni0E49.small ; + sub uni0E4A by uni0E4D uni0E4A.small ; + sub uni0E4B by uni0E4D uni0E4B.small ; + sub uni0E4C by uni0E4D uni0E4C.small ; +} ThaiTone.0E4D; + +lookup ThaiTone.0E4D.narrow { + lookupflag 0; + sub uni0E48 by uni0E4D.narrow uni0E48.small ; + sub uni0E49 by uni0E4D.narrow uni0E49.small ; + sub uni0E4A by uni0E4D.narrow uni0E4A.small ; + sub uni0E4B by uni0E4D.narrow uni0E4B.small ; + sub uni0E4C by uni0E4D.narrow uni0E4C.small ; +} ThaiTone.0E4D.narrow; + +# +# This lookup will rewrite all Thai core composition +# +lookup ccmpThaiGeneralComposition { + lookupflag 0; + + #sub @BASE @T.sd'lookup ThaiTone.0E4D [ uni0E33 ]'lookup ThaiSaraAmLakkhang ; + sub @BASE @T.sd'lookup ThaiTone.0E4D [ uni0E33 ]; + sub uni0E4D [ @T ] [ uni0E33 ]'lookup ThaiSaraAmLakkhang ; + sub @BASE [ uni0E33 ]'lookup ThaiDecomp; + + #sub @AC @T.sd'lookup ThaiTone.0E4D.narrow [ uni0E33 ]'lookup ThaiSaraAmLakkhang ; + sub @AC @T.sd'lookup ThaiTone.0E4D.narrow [ uni0E33 ]; + sub uni0E4D.narrow [ @T ] [ uni0E33 ]'lookup ThaiSaraAmLakkhang ; + sub @AC [ uni0E33 ]'lookup ThaiDecomp.narrow; + sub @AC @BV @T.sd' by [ @T.sdl ]; + sub @AC [ @AV @T.sd ]' by [ @AV.sl @T.sdl ]; + + sub [ @DC ]'lookup ThaiDC.alt @BV; + sub [ @DC.short ] @BV'lookup ThaiBV.sd; + + sub [ @RC]'lookup ThaiRC.rd @BV; + + sub [ uni0E2C ]'lookup Thai0E2C.alt [ @AV @T.sd ]; + + sub [ @AV.sl @T.sdl ] [ @AV @T.sd ]' by [ @AV.sl @T ]; + sub [ @AV uni0E4E @AV.sl @T.sd ] @T.sd' by @T; + +} ccmpThaiGeneralComposition; + +feature ccmp { + lookup ccmpThaiGeneralComposition; +} ccmp; + +# +# Fix incomplete subs & sups +# +# figure related features +@num = [ zero one two three four five six seven eight nine ]; +@sups = [ zero.superior uni00B9 uni00B2 uni00B3 four.superior five.superior six.superior seven.superior eight.superior nine.superior ]; +@subs = [ zero.inferior one.inferior two.inferior three.inferior four.inferior five.inferior six.inferior seven.inferior eight.inferior nine.inferior ]; + +@add1 = [ parenleft parenright n ]; +@add1.sups = [ uni207D uni207E uni207F ]; +@add2 = [ parenleft parenright ]; +@add2.subs = [ uni208D uni208E ]; +@all.sups = [ @sups @add1.sups ]; +@all.subs = [ @subs @add2.subs ]; + +feature sups { + lookup Latin.sups { + sub [ @num @add1 ] by @all.sups; + } Latin.sups; +} sups; + +feature subs { + lookup Latin.subs { + sub [ @num @add2 ] by @all.subs; + } Latin.subs; +} subs; diff --git a/patch/patch.py b/patch/patch.py new file mode 100755 index 0000000..97a712a --- /dev/null +++ b/patch/patch.py @@ -0,0 +1,24 @@ +#!/usr/bin/env fontforge + +# This script will only work with FontForge's Python extension. +import fontforge +import glob + +exts = ['otf', 'ttf'] +patch = './patch/patch.fea' + +for ext in exts: + fontfile = './font/*.' + ext + fonts = glob.glob(fontfile) + for font in fonts: + f = fontforge.open(font) + + # Remove all GSUB lookups + for lookup in f.gsub_lookups: + f.removeLookup(lookup) + + # Merge patch features + f.mergeFeature(patch) + f.generate(font, flags=('opentype', 'no-hints')) + + f.close()