Mitchell Hashimoto
8b3959dceb
macos: frames, attributed strings, stylized strings
2022-10-09 08:07:56 -07:00
Mitchell Hashimoto
1e2e4169a5
pkg/macos: starting frames
2022-10-08 17:52:01 -07:00
Mitchell Hashimoto
cc14344bf8
pkg/macos: path
2022-10-08 17:39:25 -07:00
Mitchell Hashimoto
061f7f6a30
pkg/macos: text framesetter
2022-10-08 17:29:50 -07:00
Mitchell Hashimoto
26280d4fe5
macos: AttributedString
2022-10-08 17:24:33 -07:00
Mitchell Hashimoto
a97f997f9a
font: start working on core text cell height calcs
2022-10-08 17:03:09 -07:00
Mitchell Hashimoto
22f437aac6
font: coretext cell width calculation
2022-10-08 11:49:23 -07:00
Mitchell Hashimoto
c9a335646e
pkg/macos: some font metrics functions
2022-10-08 11:34:45 -07:00
Mitchell Hashimoto
f393049988
fix compilation
2022-10-08 11:25:54 -07:00
Mitchell Hashimoto
0e167ae24c
font: coretext initialize face from memory
2022-10-08 11:21:24 -07:00
Mitchell Hashimoto
26629bcb6e
pkg/macos: create fonts from data
2022-10-08 10:21:33 -07:00
Mitchell Hashimoto
d0e269df6a
macos: data
2022-10-08 10:20:48 -07:00
Mitchell Hashimoto
240c560720
macos: create descriptors from URL
2022-10-08 10:16:35 -07:00
Mitchell Hashimoto
175ff0f777
macos: url from path
2022-10-08 10:13:30 -07:00
Mitchell Hashimoto
a21dda2b08
font: lower interface requirement for face
2022-10-08 10:07:35 -07:00
Mitchell Hashimoto
0ff79a0623
font: coretext glyphIndex
2022-10-08 10:04:17 -07:00
Mitchell Hashimoto
723db8be2f
font: coretext face presentation
2022-10-08 09:55:22 -07:00
Mitchell Hashimoto
90f3b9391c
font: begin coretext Face
2022-10-08 09:43:54 -07:00
Mitchell Hashimoto
71ec509930
Make font face a compile time interface, stub for coretext
2022-10-08 09:19:21 -07:00
Mitchell Hashimoto
833fd0e49a
pkg/macos: bounding rects for text
2022-10-07 21:23:34 -07:00
Mitchell Hashimoto
67bb68b39f
pkg/macos: RGB color space
2022-10-07 21:07:11 -07:00
Mitchell Hashimoto
c48ddcecd7
pkg/macos: font draw glyphs
2022-10-07 21:04:30 -07:00
Mitchell Hashimoto
61955c5d8d
pkg/macos: CGContext
2022-10-07 20:56:24 -07:00
Mitchell Hashimoto
ca7f3647ff
pkg/macos: CGColorSpace
2022-10-07 17:59:52 -07:00
Mitchell Hashimoto
fd509a2cb4
TODO for colored and styled underlines
2022-10-06 16:07:48 -07:00
Mitchell Hashimoto
8edf52f832
Add some padding to emoji
2022-10-06 15:45:05 -07:00
Mitchell Hashimoto
a44d4ea33b
Fix underline/strikeout position with larger fonts
2022-10-06 15:40:43 -07:00
Mitchell Hashimoto
b18309187e
Strikethrough ( #19 )
...
Not as straightforward as it sounds, but not hard either:
* Read OS/2 sfnt tables from TrueType fonts
* Calculate strikethrough position/thickness (prefer font-advertised if possible, calculate if not)
* Plumb the SGR code through the terminal state -- does not increase cell memory size
* Modify the shader to support it
The shaders are getting pretty nasty after this... there's tons of room for improvement. I chose to follow the existing shader style for this to keep it straightforward but will likely soon refactor the shaders.
2022-10-06 15:03:19 -07:00
Mitchell Hashimoto
4909e0117c
Merge pull request #18 from mitchellh/font-metrics
...
This improves the way we calculate metrics based on fonts to be more accurate. Two practical impacts:
* We now position the underline and underline thickness based on the font metrics
* We now correctly position Apple Emoji font
And I'm going to follow this up with strikethrough since that should be possible now.
2022-10-06 14:14:31 -07:00
Mitchell Hashimoto
3a7e53e2e4
font: calculate correct offset for non-scalable emoji fonts
2022-10-06 14:12:03 -07:00
Mitchell Hashimoto
3b549e0709
more accurately compute font metrics
2022-10-06 11:07:49 -07:00
Mitchell Hashimoto
3d4aacd51d
underline is derived from the primary font
2022-10-04 11:08:07 -07:00
Mitchell Hashimoto
c149696f61
redoing some of the baseline calcs, remove from shader
2022-10-04 10:00:32 -07:00
Mitchell Hashimoto
a4e8b5ae8c
calculate font metrics per face
2022-10-03 12:31:07 -07:00
Mitchell Hashimoto
3d6ae99fe6
update TODO
2022-10-02 11:27:40 -07:00
Mitchell Hashimoto
c565c561fd
Use Apple Emoji font on Mac
2022-10-02 11:20:55 -07:00
Mitchell Hashimoto
939e6e7a65
pkg/harfbuzz: add coretext compilation on macOS
2022-10-02 11:05:40 -07:00
Mitchell Hashimoto
f41cbf228b
font: set "backend" enum vs booleans
2022-10-02 09:41:37 -07:00
Mitchell Hashimoto
12c9482d48
Mac Font Discovery with CoreText ( #17 )
...
This implements font discovery so the `--font-family` flag works for macOS. Fonts are looked up using the Core Text API so any installed font on the Mac system can be used.
We still use FreeType for rendering, and CoreText doesn't _quite_ give us all the information we need to build the exact face in FreeType. So a TODO after this is to now implement glyph _rendering_ using Core Text and Core Graphics. Until then, a couple fonts don't quite work (i.e. Monaco, a big one!) but many do!
2022-10-01 22:21:30 -07:00
Mitchell Hashimoto
791739de9c
pkg/macos: font initializes, get glyphs
2022-10-01 21:49:02 -07:00
Mitchell Hashimoto
0f34617eab
pkg/macos: fix crash when no fonts are found
2022-10-01 21:20:15 -07:00
Mitchell Hashimoto
8292e925fc
pkg/macos: fix invalid constant
2022-10-01 21:03:51 -07:00
Mitchell Hashimoto
decbaafc6a
pkg/macos: add mutable dictionaries, flesh out font descriptor
2022-10-01 20:50:51 -07:00
Mitchell Hashimoto
20f80c4fb7
Merge pull request #16 from mitchellh/macos
...
Mac Core Foundation and Core Text Bindings
2022-10-01 16:17:22 -07:00
Mitchell Hashimoto
c6dc2a3529
macos/text: create collection from descriptors
2022-10-01 16:10:50 -07:00
Mitchell Hashimoto
623e7f5916
macos/text: FontTraits
2022-10-01 16:00:52 -07:00
Mitchell Hashimoto
7eb466959a
macos/foundation: number, dict get value
2022-10-01 15:49:05 -07:00
Mitchell Hashimoto
3eeef74315
pkg/macos: import headers instead of doing externs manually
2022-10-01 15:24:22 -07:00
Mitchell Hashimoto
57c1d8d329
macos/text: more APIs
2022-10-01 11:25:21 -07:00
Mitchell Hashimoto
88ae3be9ef
pkg/macos: CFURL
2022-10-01 11:13:44 -07:00