mirror of
https://github.com/weiweihuanghuang/Work-Sans.git
synced 2024-11-26 09:20:15 +03:00
Updated sources
- Added BUILD.txt detailing build process - Added hinting files - Added font generating script
This commit is contained in:
parent
57e3e6abe4
commit
3449c400bf
@ -13,8 +13,6 @@ Basic Font Information
|
||||
|
||||
*Note: There are no UFOs as UFOs exported from Glyphs App will currently not generate in Robofont and so on due to using '[Bracket trick](http://www.glyphsapp.com/tutorials/alternating-glyph-shapes)' and '[Brace trick](http://www.glyphsapp.com/tutorials/additional-masters-for-individual-glyphs-the-brace-trick)' to solve interpolation bumps. Glyphs marked orange are bracket layers and glyphs marked yellow are using brace layers.*
|
||||
|
||||
The project started in June 2014 and the brief was to have a [minimum viable product](http://en.wikipedia.org/wiki/Minimum_viable_product) (alpha release with 9 weights) by December 2014.
|
||||
|
||||
There is a Telugu glyph set (Work Sans-Telugu.glyphs) that comes from [Ramabhadra](http://teluguvijayam.org/fonts.html) by Silicon Andhra. Glyphs marked red in the file are those that have been manually cleaned up, the rest are automatically cleaned up with FontForge from Ramabhadra. The Latin glyphs in Work Sans-Telugu.glyphs are out of date.
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
A SIL Open Font project titled 'Work Sans' (former working title 'Alice') for Latin.
|
||||
|
||||
Work Sans is a superfamily based loosely on early Grotesques — i.e. [Stephenson Blake](https://www.flickr.com/photos/stewf/14444337254/), [Miller & Richard](https://archive.org/stream/printingtypespec00millrich#page/226/mode/2up/) and [Bauerschen Giesserei](https://archive.org/stream/hauptprobeingedr00baue#page/109/mode/1up). There will be 9 weights across 5 widths. The core of the fonts are optimised for on-screen medium-sized text usage (14px-48px) – but still very usable in print. The fonts closer to the extreme widths and weights are designed more for display use. Overall, features are simplified and optimised for screen resolutions – for example, diacritic marks are larger than how they would be in print.
|
||||
Work Sans is a superfamily based loosely on early Grotesques — i.e. [Stephenson Blake](https://www.flickr.com/photos/stewf/14444337254/), [Miller & Richard](https://archive.org/stream/printingtypespec00millrich#page/226/mode/2up/) and [Bauerschen Giesserei](https://archive.org/stream/hauptprobeingedr00baue#page/109/mode/1up). The core of the fonts are optimised for on-screen medium-sized text usage (14px-48px) – but still very usable in print. The fonts closer to the extreme widths and weights are designed more for display use. Overall, features are simplified and optimised for screen resolutions – for example, diacritic marks are larger than how they would be in print.
|
||||
|
||||
|
||||
## [Download v1.20 (OTF, TTF, WOFF, EOT)](https://github.com/weiweihuanghuang/Work-Sans/archive/v1.20.zip)
|
||||
|
@ -0,0 +1,39 @@
|
||||
Introduction
|
||||
------------
|
||||
I use Glyphs App to work on Work Sans. As stated in README.md I am not offering UFOs since the UFOs generated from Glyphs App will not interpolate properly due to using Glyphs App only features. If there is demand, in the future I may upload a compatible UFO set for interpolation.
|
||||
|
||||
Generating Fonts
|
||||
----------------
|
||||
There are three sets of instances in Glyphs app, two that are named with font weights, the third named using its stem weights. The first set (10 weights from Hairline to Black) are for generating OTFs and follow Microsoft's recommendations for setting vertical metrics[1]. The second set are for generating TTFs for webfonts and follows Google Font's webfont recommendations[2]. The third were for testing.
|
||||
|
||||
The OTFs generated with Glyphs App (Remove Overlap, Autohint) will be usable immediately in desktop applications.
|
||||
|
||||
The TTFs (Remove Overlap) will need to be processed and hinted with ttfautohint.
|
||||
|
||||
[1] http://www.glyphsapp.com/tutorials/vertical-metrics
|
||||
[2] https://code.google.com/p/googlefontdirectory/wiki/HowToGenerateWebNativeFonts
|
||||
|
||||
Generating hinted TTFs
|
||||
----------------------
|
||||
You will need:
|
||||
- ttfautohint
|
||||
http://www.freetype.org/ttfautohint/
|
||||
- Fonttools/TTX
|
||||
https://github.com/behdad/fonttools/
|
||||
- sfnt2woff
|
||||
https://people.mozilla.org/~jkew/woff/
|
||||
- woff2
|
||||
https://github.com/google/woff2
|
||||
|
||||
Once the TTFs have been generated, they need to processed with the generatefamily.sh script. To run this script, make sure the exported TTFs are in the same folder as the script. Open Terminal at the folder and enter:
|
||||
|
||||
sh generatefamily.sh
|
||||
|
||||
This script will:
|
||||
|
||||
1. Dumps the `GLYF` table of each TTF in the folder.
|
||||
2. Performs a find and replace using Python to set the ROUND_XY_TO_GRID[3] bit in composite glyphs in each generated TTX file.
|
||||
3. Recompiles TTFs from the edited TTX file.
|
||||
4. Runs ttfautohint and creates autohinted TTFs (with control-files for some weights that define custom hinting to correct autohinting mistakes when rendered in ClearType GDI).
|
||||
|
||||
[3] Setting the ROUND_XY_TO_GRID bit in composite glyphs causes components to be shifted by an integer pixel amount which preserves the hinted shape. This reduces file size so that ttfautohint does not need to rehint composite glyphs to create consistent rendering – especially important for glyphs such as super-/sub-script numerals and fractions which use components that are shifted.
|
39
sources/generatefamily.sh
Normal file
39
sources/generatefamily.sh
Normal file
@ -0,0 +1,39 @@
|
||||
for i in *.ttf; do
|
||||
ttx -t glyf "$i"
|
||||
done
|
||||
for i in *.ttx; do
|
||||
python setflag.py "$i"
|
||||
done
|
||||
for i in *.ttx; do
|
||||
name=$(basename "$i" .ttx)
|
||||
path=$(dirname "$i")
|
||||
ttx -m "$path/$name.ttf" "$i"
|
||||
rm "$i"
|
||||
rm "$path/$name.ttf"
|
||||
# mv "$path/$name#1.ttf" "$path/$name.ttf"
|
||||
done
|
||||
|
||||
ttfautohint -n -w G -x 0 -f latn WorkSans-Hairline#1.ttf WorkSans-Hairline.ttf
|
||||
echo "WorkSans-Hairline.ttf hinted"
|
||||
ttfautohint -n -w G -x 0 -f latn WorkSans-Thin#1.ttf WorkSans-Thin.ttf
|
||||
echo "WorkSans-Thin.ttf hinted"
|
||||
ttfautohint -n -w G -x 0 -f latn --control-file=hinting/WorkSans-ExtraLight.ctrl WorkSans-ExtraLight#1.ttf WorkSans-ExtraLight.ttf
|
||||
echo "WorkSans-ExtraLight.ttf hinted"
|
||||
ttfautohint -n -w G -x 0 -f latn --control-file=hinting/WorkSans-Light.ctrl WorkSans-Light#1.ttf WorkSans-Light.ttf
|
||||
echo "WorkSans-Light.ttf hinted"
|
||||
ttfautohint -n -w G -x 0 -f latn --control-file=hinting/WorkSans-Regular.ctrl WorkSans-Regular#1.ttf WorkSans-Regular.ttf
|
||||
echo "WorkSans-Regular.ttf hinted"
|
||||
ttfautohint -n -w G -x 0 -f latn --control-file=hinting/WorkSans-Medium.ctrl WorkSans-Medium#1.ttf WorkSans-Medium.ttf
|
||||
echo "WorkSans-Medium.ttf hinted"
|
||||
ttfautohint -n -w G -x 0 -f latn --control-file=hinting/WorkSans-SemiBold.ctrl WorkSans-SemiBold#1.ttf WorkSans-SemiBold.ttf
|
||||
echo "WorkSans-SemiBold.ttf hinted"
|
||||
ttfautohint -n -w G -x 0 -f latn --control-file=hinting/WorkSans-Bold.ctrl WorkSans-Bold#1.ttf WorkSans-Bold.ttf
|
||||
echo "WorkSans-Bold.ttf hinted"
|
||||
ttfautohint -n -w G -x 0 -f latn --control-file=hinting/WorkSans-ExtraBold.ctrl WorkSans-ExtraBold#1.ttf WorkSans-ExtraBold.ttf
|
||||
echo "WorkSans-ExtraBold.ttf hinted"
|
||||
ttfautohint -n -w G -x 0 -f latn --control-file=hinting/WorkSans-Black.ctrl WorkSans-Black#1.ttf WorkSans-Black.ttf
|
||||
echo "WorkSans-Black.ttf hinted"
|
||||
|
||||
for i in *#1.ttf; do
|
||||
rm "$i"
|
||||
done
|
42
sources/hinting/WorkSans-Black.ctrl
Normal file
42
sources/hinting/WorkSans-Black.ctrl
Normal file
@ -0,0 +1,42 @@
|
||||
Q left 25 (-75, 10)
|
||||
Ccedilla left 17 (-50, 10)
|
||||
ccedilla left 22 (-50, 10)
|
||||
|
||||
# Middle of g too thick
|
||||
g touch 36 yshift 0.375 @23,24 #bot of bot of top bowl
|
||||
g touch 40-43 yshift -0.375 @23,24 #top of mid-stroke
|
||||
g touch 59-64 yshift 0.25 @23,24 #bot of mid-stroke
|
||||
g touch 56,57,66,67 yshift -0.5 @23,24 #top of bot-stroke
|
||||
g touch 68 yshift -0.75 @23,24 #mid-point of top of bot-stroke
|
||||
gbreve touch 37 yshift 0.375 @23,24 #bot of bot of top bowl
|
||||
gbreve touch 51-54 yshift -0.375 @23,24 #top of mid-stroke
|
||||
gbreve touch 70-75 yshift 0.25 @23,24 #bot of mid-stroke
|
||||
gbreve touch 67,68,77,78 yshift -0.5 @23,24 #top of bot-stroke
|
||||
gbreve touch 79 yshift -0.75 @23,24 #mid-point of top of bot-stroke
|
||||
uni0123 touch 40 yshift 0.375 @23,24 #bot of bot of top bowl
|
||||
uni0123 touch 44-47 yshift -0.375 @23,24 #top of mid-stroke
|
||||
uni0123 touch 63-68 yshift 0.25 @23,24 #bot of mid-stroke
|
||||
uni0123 touch 60,61,70,71 yshift -0.5 @23,24 #top of bot-stroke
|
||||
uni0123 touch 72 yshift -0.75 @23,24 #mid-point of top of bot-stroke
|
||||
|
||||
g touch 35-38 yshift 0.25 @21,22 #bot of bot of top bowl
|
||||
g touch 40-43 yshift -0.625 @21,22 #top of mid-stroke
|
||||
g touch 60-63 yshift -0.375 @21,22 #bot of mid-stroke
|
||||
g touch 56-59,64-68 yshift -0.5 @21,22 #top of bot-stroke
|
||||
gbreve touch 46-48 yshift 0.25 @21,22 #bot of bot of top bowl
|
||||
gbreve touch 51-54 yshift -0.625 @21,22 #top of mid-stroke
|
||||
gbreve touch 71-74 yshift -0.375 @21,22 #bot of mid-stroke
|
||||
gbreve touch 67-70,75-79 yshift -0.5 @21,22 #top of bot-stroke
|
||||
uni0123 touch 39-42 yshift 0.25 @21,22 #bot of bot of top bowl
|
||||
uni0123 touch 44-47 yshift -0.625 @21,22 #top of mid-stroke
|
||||
uni0123 touch 64-67 yshift -0.375 @21,22 #bot of mid-stroke
|
||||
uni0123 touch 60-63,68-72 yshift -0.5 @21,22 #top of bot-stroke
|
||||
|
||||
# breve too short
|
||||
breve touch 5,6,10,11 yshift 1 @23,24
|
||||
gbreve touch 2,3,7,8 yshift 1 @23,24
|
||||
# accents too low
|
||||
breve touch 0-11 yshift 1 @21,22
|
||||
gbreve touch 0-11 yshift 1 @21,22
|
||||
uni0123 touch 0,1 yshift 1 @21,22
|
||||
uni0123 touch 0,1 yshift 1 @21,22
|
45
sources/hinting/WorkSans-Bold.ctrl
Normal file
45
sources/hinting/WorkSans-Bold.ctrl
Normal file
@ -0,0 +1,45 @@
|
||||
Q left 25 (-75, 10)
|
||||
Ccedilla left 18 (-50, 10)
|
||||
ccedilla left 19 (-50, 10)
|
||||
|
||||
a touch 15 yshift 0.25 @22
|
||||
aogonek touch 22 yshift 0.25 @22
|
||||
ae touch 51,59,60 yshift 0.625 @22
|
||||
|
||||
e touch 23,24 yshift -0.675 @14
|
||||
e touch 26 yshift 0.375 @14
|
||||
ae touch 46,47 yshift -0.675 @14
|
||||
ae touch 50 yshift 0.375 @14
|
||||
|
||||
g touch 37-38 yshift 0.375 @14
|
||||
g touch 0,44,45 yshift -0.75 @14
|
||||
g touch 63,64 yshift 0.5 @14
|
||||
gbreve touch 20-21 yshift 0.375 @14
|
||||
gbreve touch 27-29 yshift -0.75 @14
|
||||
gbreve touch 69,80 yshift 0.5 @14
|
||||
|
||||
g touch 37-38 yshift 0.375 @21-22 # bot of bot of top bowl
|
||||
g touch 0,44,45 yshift -0.75 @21-22 # top of mid stroke
|
||||
g touch 62-65 yshift -0.75 @21-22 # bot of mid stroke
|
||||
g touch 58,68,69 yshift -0.5 @21-22 # top of bot stroke
|
||||
gbreve touch 20-21 yshift 0.375 @21-22
|
||||
gbreve touch 26-29 yshift -0.75 @21-22
|
||||
gbreve touch 69,70,79,80 yshift -0.75 @21-22
|
||||
gbreve touch 73-75 yshift -0.5 @21-22
|
||||
uni0123 touch 41,42 yshift 0.375 @21-22
|
||||
uni0123 touch 4,47-49 yshift -0.75 @21-22
|
||||
uni0123 touch 66-69 yshift -0.75 @21-22
|
||||
uni0123 touch 62,72,73 yshift -0.5 @21-22
|
||||
g_j.liga touch 50-51 yshift 0.375 @21-22
|
||||
g_j.liga touch 12,57,58 yshift -0.75 @21-22
|
||||
g_j.liga touch 89-92 yshift -0.75 @21-22
|
||||
g_j.liga touch 85,95,96 yshift -0.5 @21-22
|
||||
|
||||
gbreve touch 0-13 yshift 1 @14-16
|
||||
breve touch 0-13 yshift 1 @14-16
|
||||
|
||||
macron touch 0-3 yshift 1 @14-16,21,22
|
||||
#Euro touch 13,14,31,32 yshift 0.75 @17,18
|
||||
#Euro touch 15,16,29,30 yshift -0.125 @17,18
|
||||
#Euro touch 8,9,35,36 yshift -0.75 @17,18
|
||||
#Euro touch 6,7,37,38 yshift 0.125 @17,18
|
40
sources/hinting/WorkSans-ExtraBold.ctrl
Normal file
40
sources/hinting/WorkSans-ExtraBold.ctrl
Normal file
@ -0,0 +1,40 @@
|
||||
# bottom of Q too thick
|
||||
Q left 25 (-100, 100)
|
||||
|
||||
# bottom of C- c- cedilla too thick
|
||||
Ccedilla left 18 (-50, 10)
|
||||
ccedilla left 21 (-50, 10)
|
||||
|
||||
# Middle of g too thick
|
||||
g touch 37-38 yshift 0.375 @17,18
|
||||
g touch 0,44,45 yshift -0.75 @17,18
|
||||
g touch 60-63 yshift -0.5 @17,18
|
||||
gbreve touch 50-52 yshift 0.375 @17,18
|
||||
gbreve touch 14,57,58 yshift -0.75 @17,18
|
||||
gbreve touch 73-76 yshift -0.5 @17,18
|
||||
|
||||
# Middle of g too thick
|
||||
g touch 38 yshift 0.375 @21,22
|
||||
g touch 0,44,45 yshift -1 @21,22
|
||||
g touch 60-63 yshift -1 @21,22
|
||||
g touch 58,67,68 yshift -0.125 @21,22
|
||||
gbreve touch 51 yshift 0.375 @21,22
|
||||
gbreve touch 14,57,58 yshift -1 @21,22
|
||||
gbreve touch 73-76 yshift -1 @21,22
|
||||
gbreve touch 71,80,81 yshift -0.125 @21,22
|
||||
uni0123 touch 42 yshift 0.375 @21,22
|
||||
uni0123 touch 4,48,49 yshift -1 @21,22
|
||||
uni0123 touch 64-67 yshift -1 @21,22
|
||||
uni0123 touch 62,71,72 yshift -0.125 @21,22
|
||||
|
||||
# breve too short
|
||||
breve touch 5,6,12,13 yshift 1 @17,18,21,22
|
||||
gbreve touch 2,3,9,10 yshift 1 @17,18,21,22
|
||||
|
||||
# accents too low
|
||||
circumflex touch 0-6 yshift 1 @15-18,21,22
|
||||
breve touch 0-13 yshift 1 @15,16,21,22
|
||||
gbreve touch 0-13 yshift 1 @15,16,21,22
|
||||
macron touch 0-3 yshift 1 @15,16,19-22,25,26
|
||||
uni0123 touch 0,1 yshift 1 @21,22
|
||||
uni0123 touch 0,1 yshift 1 @21,22
|
42
sources/hinting/WorkSans-ExtraLight.ctrl
Normal file
42
sources/hinting/WorkSans-ExtraLight.ctrl
Normal file
@ -0,0 +1,42 @@
|
||||
# bottom of C- c- cedilla
|
||||
Ccedilla left 19 (-50, 10)
|
||||
ccedilla left 19 (-50, 10)
|
||||
|
||||
# middle of S s too bold
|
||||
S touch 13 yshift -0.125 @33-41 #top
|
||||
S touch 34 yshift 0.125 @33-41 #bot
|
||||
Scaron touch 20 yshift -0.125 @33-41 #top
|
||||
Scaron touch 41 yshift 0.125 @33-41 #bot
|
||||
Sacute touch 17 yshift -0.125 @33-41 #top
|
||||
Sacute touch 38 yshift 0.125 @33-41 #bot
|
||||
uni015E touch 54 yshift -0.125 @33-41 #top
|
||||
uni015E touch 32 yshift 0.125 @33-41 #bot
|
||||
|
||||
s touch 32 yshift -0.125 @33-41 #top
|
||||
s touch 12 yshift 0.125 @33-41 #bot
|
||||
uni015F touch 52 yshift -0.125 @33-41 #top
|
||||
uni015F touch 32 yshift 0.125 @33-41 #bot
|
||||
|
||||
# middle of S s too light
|
||||
S touch 13 yshift 0.125 @42-49 #top
|
||||
S touch 34 yshift -0.125 @42-49 #bot
|
||||
S touch 12 yshift 0.125 @42-49 #top
|
||||
S touch 32 yshift -0.125 @42-49 #bot
|
||||
Scaron touch 20 yshift 0.125 @42-49 #top
|
||||
Scaron touch 41 yshift -0.125 @42-49 #bot
|
||||
Sacute touch 17 yshift 0.125 @42-49 #top
|
||||
Sacute touch 38 yshift -0.125 @42-49 #bot
|
||||
uni015E touch 54 yshift 0.125 @42-49 #top
|
||||
uni015E touch 32 yshift -0.125 @42-49 #bot
|
||||
|
||||
s touch 32 yshift 0.125 @42-49 #top
|
||||
s touch 12 yshift -0.125 @42-49 #bot
|
||||
uni015F touch 52 yshift 0.125 @42-49 #top
|
||||
uni015F touch 32 yshift -0.125 @42-49 #bot
|
||||
|
||||
# middle of a too light
|
||||
a touch 40 yshift -0.25 @42-47
|
||||
aogonek touch 53 yshift -0.25 @42-47
|
||||
|
||||
a touch 40 yshift -0.125 @48-50
|
||||
aogonek touch 53 yshift -0.125 @48-50
|
45
sources/hinting/WorkSans-Light.ctrl
Normal file
45
sources/hinting/WorkSans-Light.ctrl
Normal file
@ -0,0 +1,45 @@
|
||||
# bottom of C- c- cedilla
|
||||
Ccedilla left 19 (-50, 10)
|
||||
ccedilla left 19 (-50, 10)
|
||||
|
||||
# middle of S s too bold
|
||||
S touch 12 yshift -0.125 @23-30 #top
|
||||
S touch 32 yshift 0.125 @23-30 #bot
|
||||
Scaron touch 19 yshift -0.125 @23-30 #top
|
||||
Scaron touch 39 yshift 0.125 @23-30 #bot
|
||||
Sacute touch 16 yshift -0.125 @23-30 #top
|
||||
Sacute touch 36 yshift 0.125 @23-30 #bot
|
||||
uni015E touch 53 yshift -0.125 @23-30 #top
|
||||
uni015E touch 32 yshift 0.125 @23-30 #bot
|
||||
|
||||
s touch 34 yshift -0.125 @23-30 #top
|
||||
s touch 12 yshift 0.125 @23-30 #bot
|
||||
uni015F touch 54 yshift -0.125 @23-30 #top
|
||||
uni015F touch 32 yshift 0.125 @23-30 #bot
|
||||
|
||||
# middle of S s too light
|
||||
S touch 12 yshift 0.125 @31-36 #top
|
||||
S touch 32 yshift -0.125 @31-36 #bot
|
||||
S touch 12 yshift 0.125 @31-36 #top
|
||||
S touch 32 yshift -0.125 @31-36 #bot
|
||||
Scaron touch 19 yshift 0.125 @31-36 #top
|
||||
Scaron touch 39 yshift -0.125 @31-36 #bot
|
||||
Sacute touch 16 yshift 0.125 @31-36 #top
|
||||
Sacute touch 36 yshift -0.125 @31-36 #bot
|
||||
uni015E touch 53 yshift 0.125 @31-36 #top
|
||||
uni015E touch 32 yshift -0.125 @31-36 #bot
|
||||
|
||||
s touch 34 yshift 0.125 @31-36 #top
|
||||
s touch 12 yshift -0.125 @31-36 #bot
|
||||
uni015F touch 54 yshift 0.125 @31-36 #top
|
||||
uni015F touch 32 yshift -0.125 @31-36 #bot
|
||||
|
||||
# middle of a too bold
|
||||
a touch 17 yshift -0.125 @29,30
|
||||
aogonek touch 23 yshift -0.125 @29,30
|
||||
|
||||
# middle of a too light
|
||||
a touch 38 yshift -0.25 @31,32,35,36
|
||||
a touch 39 yshift -0.125 @33,34
|
||||
aogonek touch 54 yshift -0.25 @31,32,35,36
|
||||
aogonek touch 55 yshift -0.125 @33,34
|
22
sources/hinting/WorkSans-Medium.ctrl
Normal file
22
sources/hinting/WorkSans-Medium.ctrl
Normal file
@ -0,0 +1,22 @@
|
||||
Q left 25 (-75, 10)
|
||||
a touch 16 yshift 0.375 @18-21
|
||||
a touch 17 yshift 0.125 @18-21
|
||||
aogonek touch 21 yshift 0.375 @18-21
|
||||
aogonek touch 22 yshift 0.125 @18-21
|
||||
s touch 12 yshift -0.125 @18-21
|
||||
s touch 33 yshift 0.125 @18-21
|
||||
S touch 12 yshift 0.125 @18-21
|
||||
S touch 32 yshift -0.125 @18-21
|
||||
s touch 12 yshift 0.125 @15-17
|
||||
s touch 33 yshift -0.125 @15-17
|
||||
S touch 12 yshift -0.125 @15-17
|
||||
S touch 32 yshift 0.125 @15-17
|
||||
g touch 39-40,53-55 yshift 0.125 @18 # top and bot of bot of top bowl
|
||||
g touch 0,47-48 yshift -0.875 @18 # top of mid stroke
|
||||
g touch 65-68 yshift -0.5 @18 # bot of mid stroke
|
||||
gbreve touch 20-22,62,72-73 yshift 0.125 @18
|
||||
gbreve touch 29-31 yshift -0.875 @18
|
||||
gbreve touch 74,75,85,86 yshift -0.5 @18
|
||||
g_j.liga touch 18-20,70,80,81 yshift 0.125 @18
|
||||
g_j.liga touch 25-27 yshift -0.875 @18
|
||||
g_j.liga touch 82,83,93,94 yshift -0.5 @18
|
40
sources/hinting/WorkSans-Regular.ctrl
Normal file
40
sources/hinting/WorkSans-Regular.ctrl
Normal file
@ -0,0 +1,40 @@
|
||||
#OE touch 33-touch 35 yshift 0.375 @21
|
||||
Ccedilla left 20 (-50, 10)
|
||||
ccedilla left 20 (-50, 10)
|
||||
Q left 25 (-75, 10)
|
||||
|
||||
a touch 16 yshift 0.375 @22-26
|
||||
a touch 17 yshift 0.125 @22-26
|
||||
aogonek touch 21 yshift 0.375 @22-26
|
||||
aogonek touch 22 yshift 0.125 @22-26
|
||||
|
||||
S touch 12 yshift 0.125 @22-26
|
||||
S touch 32 yshift -0.125 @22-26
|
||||
S touch 12 yshift -0.125 @17-21
|
||||
S touch 32 yshift 0.125 @17-21
|
||||
Scaron touch 19 yshift 0.125 @22-26
|
||||
Scaron touch 39 yshift -0.125 @22-26
|
||||
Scaron touch 19 yshift -0.125 @17-21
|
||||
Scaron touch 39 yshift 0.125 @17-21
|
||||
Sacute touch 16 yshift 0.125 @22-26
|
||||
Sacute touch 36 yshift -0.125 @22-26
|
||||
Sacute touch 16 yshift -0.125 @17-21
|
||||
Sacute touch 36 yshift 0.125 @17-21
|
||||
uni015E touch 53 yshift 0.125 @22-26
|
||||
uni015E touch 33 yshift -0.125 @22-26
|
||||
uni015E touch 53 yshift -0.125 @17-21
|
||||
uni015E touch 33 yshift 0.125 @17-21
|
||||
|
||||
s touch 33 yshift 0.125 @22-26
|
||||
s touch 12 yshift -0.125 @22-26
|
||||
s touch 33 yshift -0.125 @17-21
|
||||
s touch 12 yshift 0.125 @17-21
|
||||
uni015F touch 54 yshift 0.125 @22-26
|
||||
uni015F touch 33 yshift -0.125 @22-26
|
||||
uni015F touch 54 yshift -0.125 @17-21
|
||||
uni015F touch 33 yshift 0.125 @17-21
|
||||
|
||||
sterling touch 14 yshift 0.5 @22-24
|
||||
sterling touch 62 yshift 1 @22-24
|
||||
sterling touch 11, 64 yshift 0.625 @22-24
|
||||
sterling touch 67 yshift -1 @22-24
|
14
sources/hinting/WorkSans-SemiBold.ctrl
Normal file
14
sources/hinting/WorkSans-SemiBold.ctrl
Normal file
@ -0,0 +1,14 @@
|
||||
Q left 25 (-75, 10)
|
||||
Ccedilla left 20 (-50, 10)
|
||||
ccedilla left 20 (-50, 10)
|
||||
gbreve touch 0-13 yshift 1 @15,16
|
||||
breve touch 0-13 yshift 1 @15,16
|
||||
macron touch 0-3 yshift 1 @15,16
|
||||
|
||||
a touch 16 yshift 0.25 @25,26
|
||||
a touch 37 yshift -0.25 @25,26 # bot of mid stroke
|
||||
a touch 44 yshift -0.125 @25,26 # top of bot storke
|
||||
|
||||
aogonek touch 21 yshift 0.25 @25,26
|
||||
aogonek touch 51 yshift -0.25 @25,26 # bot of mid stroke
|
||||
aogonek touch 58 yshift -0.125 @25,26 # top of bot storke
|
27
sources/setflag.py
Normal file
27
sources/setflag.py
Normal file
@ -0,0 +1,27 @@
|
||||
# This python script finds and replaces the flags="0x0" with flags="0x4" to set the ROUND_XY_TO_GRID bit in a TTX.
|
||||
# I'm sure this could be done in a much more efficient way, i.e. actually calling fontTools directly instead of dumping and recompiling the GLYF table with TTX
|
||||
# ... but I don't know how to do that
|
||||
|
||||
# import the modules that we need. (re is for regex)
|
||||
import os, re, sys
|
||||
|
||||
eachTTX = sys.argv[1]
|
||||
|
||||
# set the working directory for a shortcut
|
||||
# os.chdir('/Users/weihuang/Google Drive/Type Design/Google/Outputs/Test/Hinting')
|
||||
|
||||
# open the source file and read it
|
||||
fh = file(eachTTX, 'r')
|
||||
subject = fh.read()
|
||||
fh.close()
|
||||
|
||||
# create the pattern object. Note the "r". In case you're unfamiliar with Python
|
||||
# this is to set the string as raw so we don't have to escape our escape characters
|
||||
pattern = re.compile(r'<component (.+)flags="(0x0)"(.+)')
|
||||
# do the replace
|
||||
result = pattern.sub(r'<component \1flags="0x4"\3', subject)
|
||||
|
||||
# write the file
|
||||
f_out = file(eachTTX, 'w')
|
||||
f_out.write(result)
|
||||
f_out.close()
|
Loading…
Reference in New Issue
Block a user