Steven Edwards
3313997e18
Reformat code style.
2015-09-11 05:28:25 -04:00
Steven Edwards
b7798d3968
Replace SubtableValidPredFunc with func signature.
2015-09-11 05:27:42 -04:00
Steven Edwards
1eddc32ee9
Remove unused funcs continueIf, nameEntryInASCII.
2015-09-11 05:26:37 -04:00
Steven Edwards
2cc98d1ad8
s/NameIDCode/NameID/g
2015-09-11 04:57:14 -04:00
Steven Edwards
134884e1a5
Make suggested changes in #19 .
2015-09-09 07:19:54 -04:00
Steven Edwards
ff2b91c280
Move cmap consts to parseCmap.
2015-09-08 20:33:00 -04:00
Steven Edwards
7c1e8f1985
Reset re-adding Bounds when rebasing.
2015-09-08 20:30:39 -04:00
Steven Edwards
b1369b2178
Sort testCases by key name.
2015-09-08 18:56:39 -04:00
Steven Edwards
b78feafacd
Refactor Name with parseCmap.
2015-09-05 06:02:41 -04:00
Steven Edwards
a05e60ea09
Update Name to match structure of parseCmap.
2015-09-05 04:25:49 -04:00
Steven Edwards
e259c188c8
Make NameID constants explicit.
2015-09-04 16:01:46 -04:00
Steven Edwards
c5aa1198c9
Remove TestStyle.
2015-09-04 16:01:46 -04:00
Steven Edwards
b81666dccc
Move parseName to Name, rewritten to be lazy.
...
Move nameEntryInASCII into the global scope.
2015-09-04 16:01:45 -04:00
Steven Edwards
c765a57301
Remove eager reading of name table.
2015-09-04 16:01:45 -04:00
Steven Edwards
948039527f
Rewrite parseName, Name to use new NameID constants.
...
Also:
- redefine nameInfo;
- set font.nameRecord to *nameInfo;
- remove Style func.
2015-09-04 16:01:45 -04:00
Steven Edwards
52fdfd4dac
Removed parentheses in parseName conditional.
2015-09-04 15:44:54 -04:00
Steven Edwards
5f872e4f01
Replaced bytes.Buffer with []byte in nameEntryInASCII.
2015-09-04 15:44:54 -04:00
Steven Edwards
32d6e5fc15
Add luximr, luxisr as test cases for Name, Style.
2015-09-04 15:44:54 -04:00
Steven Edwards
ae9e4ed6b9
Rewrite parseName to be consistent with freetype2.
2015-09-04 15:44:54 -04:00
Steven Edwards
b96c7d6be0
Sort table names in Font definition, parse.
2015-09-04 15:44:54 -04:00
Steven Edwards
dc8d81915d
Set f.nameRecord to its name and style.
...
Code was returning from parseHead before setting the nameRecord.
2015-09-04 15:44:53 -04:00
Steven Edwards
f90b2f4820
Add tests for Name, Style funcs using luxisr font.
2015-09-04 15:44:53 -04:00
Steven Edwards
efd8dbcc39
Inlined decodeUTF16 func to remove runes.go
2015-09-04 15:44:53 -04:00
Steven Edwards
5e7426d6f5
Add parseName, Name, and Style funcs.
...
Also includes decodeUTF16 func, which is used by parseName.
2015-09-04 15:44:53 -04:00
Nigel Tao
41fa49aa5b
Update x/exp/shiny/font to x/image/font.
2015-09-01 15:49:46 +10:00
Nigel Tao
494079eb2b
Cache the glyph index lookup.
...
benchmark old ns/op new ns/op delta
BenchmarkDrawString-8 8618239 8149527 -5.44%
2015-08-31 14:14:50 +10:00
Nigel Tao
03bdcc0fe1
Have face.Glyph return an advance width, not the new dot.
...
This tracks an upstream change in the x/exp/shiny/font package.
2015-08-31 11:34:42 +10:00
Nigel Tao
8a4428169d
Make raster.Painter's max alpha 1<<16-1, not 1<<32-1.
...
This is more consistent with the standard library's image/color package.
The benchmarks didn't seem to change significantly.
2015-08-30 23:48:43 +10:00
Nigel Tao
3ba1c0f728
Rename Point and End slices to Points and Ends.
...
The slice Foos is plural; it refers to multiple elements. The element Foos[i]
is the i'th Foo.
2015-08-30 22:27:18 +10:00
Nigel Tao
3cc748686b
Use fixed.Rectangle26_6 instead of truetype.Bounds.
...
The previous "the endpoints are inclusive" comment seems confusing. It's true
that the bounding box's max X equals the right-most coordinate, which suggests
<= instead of <, but that node's coordinate is itself exclusive. Consider the
solid 1-pixel square: (0, 0), (64, 0), (64, 64), (0, 64) in fixed.Point26_6
coordinates. The right-most coordinate is 64, and the bounding box's max X
equals 64, but rasterizing that square only affects sub-pixels up to but not
including 64.
Instead, it seems accurate to follow the fixed.Rectangle26_6 description, in
that the max values are exclusive.
2015-08-30 22:06:37 +10:00
Nigel Tao
7a598da6de
Delete the truetype.NewGlyphBuf function.
...
The zero value of a GlyphBuf is already perfectly usable.
2015-08-30 21:35:58 +10:00
Nigel Tao
fe26067669
Cache glyph mask images.
...
benchmark old ns/op new ns/op delta
BenchmarkDrawString-4 88103151 14188817 -83.90%
2015-08-27 22:16:16 +10:00
Nigel Tao
62e59645ee
Quantize sub-pixel glyph rendering.
...
This is in anticipation of caching glyph images. Quantization means that cache
hits are more likely.
Also make NewFace take an *Options instead of an Options.
2015-08-25 22:34:31 +10:00
Nigel Tao
a021a5f23e
Rename Kerning to Kern.
2015-08-24 16:17:16 +10:00
Nigel Tao
db77c6a161
Delete some unnecessary fixed.Int26_6 conversions.
2015-08-24 15:57:20 +10:00
Nigel Tao
24265d1c91
Implement GlyphBounds and GlyphAdvance.
2015-08-24 15:51:50 +10:00
Nigel Tao
9c46b87503
Make face.Glyph not allocate a new mask each time.
...
benchmark old ns/op new ns/op delta
BenchmarkDrawString-4 96914389 88683659 -8.49%
benchmark old allocs new allocs delta
BenchmarkDrawString-4 32287 0 -100.00%
benchmark old bytes new bytes delta
BenchmarkDrawString-4 1929619 156 -99.99%
2015-08-23 21:11:02 +10:00
Nigel Tao
2d84b72ff6
Add a DrawString benchmark.
2015-08-23 20:45:19 +10:00
Nigel Tao
d8618774be
Fix some comment typos.
...
These comments weren't updated when we went from 24.8 to 26.6.
2015-08-22 14:48:07 +10:00
Nigel Tao
6deea24143
Add a truetype.Face type.
...
Its implementation is mostly a copy/paste of the freetype.Context type.
Follow-up commits will make it more efficient.
Also add an example that uses a truetype.Face and the
golang.org/x/exp/shiny/font package to draw text.
2015-08-22 14:46:12 +10:00
Nigel Tao
7166253831
Fix rounding up for 26.6 fixed point, not 24.8.
2015-08-21 14:00:51 +10:00
Nigel Tao
071d96ed47
Update BenchmarkDrawString testdata dir.
2015-08-20 16:09:11 +10:00
Nigel Tao
f42630ca7a
Use the common golang.org/x/exp/shiny/font.Hinting type.
2015-08-20 16:07:51 +10:00
Nigel Tao
7e2154db58
Delete the f26dot6 type in favor of fixed.Int26_6.
2015-08-18 16:47:46 +10:00
Nigel Tao
43fc220ebd
Make f26dot6 methods prefix, not infix.
...
This is in anticipation of removing the f26dot6 type entirely. Instead,
we will use the fixed.Int26_6 type from golang.org/x/image/math/fixed.
2015-08-18 16:36:59 +10:00
Nigel Tao
e8121e3c7d
Don't use backtick quotes in the comments.
2015-08-18 16:33:14 +10:00
Nigel Tao
2a5cbfd47e
Use the fixed.Int26_6 type in package truetype.
2015-08-18 16:30:37 +10:00
Nigel Tao
a9554eda48
Fix example/freetype for the s/Fix32/fixed.Int26_6/ change.
2015-08-18 16:08:44 +10:00
Nigel Tao
856a70c395
Use the fixed.Int26_6 and fixed.Point26_6 types.
2015-08-17 10:26:09 +10:00
Nigel Tao
d91c1d6844
Remove Point methods other than Add, Sub, Mul.
...
This is in anticipation of removing the Point type entirely. Instead, we will
use the fixed.Point26_6 type from golang.org/x/image/math/fixed.
2015-08-13 21:17:25 +10:00