summaryrefslogtreecommitdiff
path: root/pkg/freetype
AgeCommit message (Collapse)Author
2025-10-03Zig 0.15: zig fmtMitchell Hashimoto
2025-10-03zig-15: build binary buildsMitchell Hashimoto
2025-09-17Use same hinting flags for measurement and renderingDaniel Wennberg
2025-07-22build-system: Replace deprecated usages of root_source_file on addTests (#8031)Mitchell Hashimoto
Yet another low-hanging fruit
2025-07-23build-system: Replace deprecated usages of root_source_file on addTestsJayson Reis
2025-07-22build-system: Replace deprecated usages of addStaticLibrary with addLibrary ↵Jayson Reis
(#8029) Hi there, this is just a low-hanging fruit and it also prepares the way for the future 0.15, which removes addStaticLibrary. Please, let me know what to do on the `// TODO` comments.
2025-07-04font: add constraint logic to rasterizersQwerasd
This is in preparation to move constraint off the GPU to simplify our shaders, instead we only need to constrain once at raster time and never again. This also significantly reworks the freetype renderGlyph function to be generally much cleaner and more straightforward. This commit doesn't actually apply the constraints to anything yet, that will be in following commits.
2025-05-29build: use a libc txt file to point to correct Apple SDKMitchell Hashimoto
This fixes an issue where Ghostty would not build against the macOS 15.5 SDK. What was happening was that Zig was adding its embedded libc paths to the clang command line, which included old headers that were incompatible with the latest (macOS 15.5) SDK. Ghostty was adding the newer paths but they were being overridden by the embedded libc paths. The reason this was happening is because Zig was using its own logic to find the libc paths and this was colliding with the paths we were setting manually. To fix this, we now use a `libc.txt` file that explicitly tells Zig where to find libc, and we base this on our own SDK search logic.
2025-03-19font/freetype: disable SVG glyphs, simplify color checkQwerasd
We don't currently support rendering SVG glyphs so they should be ignored when loading. Additionally, the check for whether a glyph is colored has been simplified by just checking the pixel mode of the rendered bitmap. This commit also fixes a bug caused by calling the color check inside of `renderGlyph`, which caused the bitmap to be freed creating a chance for memory corruption and garbled glyphs.
2025-03-14build: mark most dependencies as lazyMitchell Hashimoto
Lazy dependencies are only fetched if the build script would actually reach a usage of that dependency at runtime (when the `lazyDependency` function is called). This can save a lot of network traffic, disk uage, and time because we don't have to fetch and build dependencies that we don't actually need. Prior to this commit, Ghostty fetched almost everything for all platforms and configurations all the time. This commit reverses that to fetching almost nothing until it's actually needed. There are very little downsides to doing this[1]. One downside is `zig build --fetch` doesn't fetch lazy dependencies, but we don't rely on this command for packaging and suggest using our custom shell script that downloads a cached list of URLs (`build.zig.zon.txt`). This commit doesn't cover 100% of dependencies, since some provide no benefit to make lazy while the complexity to make them lazy is higher (in code style typically). Conversely, some simple dependencies are marked lazy even if they're almost always needed if they don't introduce any real complexity to the code, because there is very little downside to do so. [1]: https://ziggit.dev/t/lazy-dependencies-best-dependencies/5509/5
2025-03-11pkg: update to new build.zig.zon format and hash valuesMitchell Hashimoto
2025-03-11Zig 0.14Mitchell Hashimoto
2025-02-14build: mirror most of our direct dependenciesMitchell Hashimoto
This adds a new script `update-mirror.sh` which generates the proper blob format for R2 (or any blob storage) to mirror all of our dependencies. It doesn't automate updating build.zig.zon but on an ongoing basis this should be easy to do manually, and we can strive to automate it in the future. I omitted iTerm2 color themes because we auto-update that via CI and updating all of the machinery to send it to our mirror and so on is a pain. Additionally, this doesn't mirror transitive dependencies because Zig doesn't have a way to fetch those from a mirror instead (unless you pre-generate a full cache like packagers but that's not practical for day to day development). It's hugely beneficial just to get most of our dependencies mirrored.
2025-01-03don't build freetype2 when system integration is enabledJan200101
2024-12-13font: more robust extraction of vertical metrics from tablesQwerasd
Previously always assuming the typo metrics were good caused some fonts to have abnormally short cell heights.
2024-12-11font: unify metrics calculations & separate sprite metricsQwerasd
Unify grid metrics calculations by relying on shared logic mostly based on values directly from the font tables, this deduplicates a lot of code and gives us more control over how we interpret various metrics. Also separate metrics for underlined, strikethrough, and overline thickness and position, and box drawing thickness, so that they can individually be adjusted as the user desires.
2024-10-24build: use Zig system packaging optionsMitchell Hashimoto
This allows dynamically linking against system libraries, which is particularly useful for packaging.
2024-08-25font/freetype: synthetic boldMitchell Hashimoto
2024-08-24font/freetype: synthetic italicMitchell Hashimoto
2024-08-16pkg/freetype: remove usingnsMitchell Hashimoto
2024-06-24begin 0.13 update process -- very brokenMitchell Hashimoto
2024-05-28pkg/freetype: use c_ulong which isn't 64-bit on windowsMitchell Hashimoto
2024-05-28font/freetype: CBDT/CBLC tables imply colorMitchell Hashimoto
2024-05-28font/freetype: update to new presentation APIsMitchell Hashimoto
2024-05-28font/freetype: API to load font tableMitchell Hashimoto
2024-04-17working on more zig breaking changesMitchell Hashimoto
2024-02-26build API change: update usage of addCSourceFilesKrzysztof Wolicki
2024-01-13build: build produces a broken object file for iOSMitchell Hashimoto
This gets `zig build -Dtarget=aarch64-ios` working. By "working" I mean it produces an object file without compiler errors. However, the object file certainly isn't useful since it uses a number of features that will not work in the iOS sandbox. This is just an experiment more than anything to see how hard it would be to get libghostty working within iOS to render a terminal. Note iOS doesn't support ptys so this wouldn't be a true on-device terminal. The challenge right now is to just get a terminal rendering (not usable).
2024-01-07Merge branch 'mitchellh:main' into mainKrzysztof Wolicki
2024-01-07Add include paths to freetype moduleKrzysztof Wolicki
2024-01-05pkg/freetype: unknown errors should be reported, not unreachableMitchell Hashimoto
2024-01-03WIP: Update to new build module API after Zig PR #18160Krzysztof Wolicki
Temporarily change dependency sources to forks until they update
2023-12-06Remove FiraCode leftoversCarlos Alexandro Becker
from #993 Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2023-10-01pkg: add test targetsMitchell Hashimoto
2023-10-01pkg: remove all old build.zig filesMitchell Hashimoto
2023-10-01pkg/freetype, harfbuzz modulesMitchell Hashimoto
2023-10-01pkg/freetypeMitchell Hashimoto
2023-09-14windows: initial support for zig build testJonathan Marler
Makes progress getting "zig build test" to work on windows. Mostly fixed issues around build configuration and added some branches throughout the Zig code to return/throw errors for unimplemented parts. I also added an initial implementation for getting the home dir.
2023-08-28font: freetype supports font variation settingsMitchell Hashimoto
2023-08-25quirks: Menlo/Monaco should disable ligatures by default (#331)Mitchell Hashimoto
* font: disable default font features for Menlo and Monaco Both of these fonts have a default ligature on "fi" which makes terminal rendering super ugly. The easiest thing to do is special-case these fonts and disable ligatures. It appears other terminals do the same thing.
2023-08-08Fix typosKevin Hovsäter
2023-08-02update zigMitchell Hashimoto
2023-06-30Update Zig (#164)Mitchell Hashimoto
* update zig * pkg/fontconfig: clean up @as * pkg/freetype,harfbuzz: clean up @as * pkg/imgui: clean up @as * pkg/macos: clean up @as * pkg/pixman,utf8proc: clean up @as * clean up @as * lots more @as cleanup * undo flatpak changes * clean up @as
2023-06-25Update zig, mach, fmtMitchell Hashimoto
2023-02-14new build systemMitchell Hashimoto
2022-10-16pkg/freetype: remove unused APIMitchell Hashimoto
2022-10-16Bring back freetype font bitmap conversionMitchell Hashimoto
Monaco on Mac is mono
2022-10-13fix some issues that fail nightly stage2 compilerMitchell Hashimoto
2022-10-06Strikethrough (#19)Mitchell Hashimoto
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-04redoing some of the baseline calcs, remove from shaderMitchell Hashimoto