Compare commits

..

2 Commits

Author SHA1 Message Date
4a91fa2176
update readme 2023-07-29 20:27:55 -07:00
f068e64151
fix tests 2023-07-29 20:16:16 -07:00
2 changed files with 53 additions and 3 deletions

View File

@ -0,0 +1,34 @@
fontfinder
==========
Zig program to find fonts to solve my [mlterm](https://github.com/elerch/vcsh_mlterm)
font configuration problem. See https://github.com/elerch/vcsh_mlterm/blob/master/.mlterm/aafont
for more information on this.
See `fontfinder -h` for usage. For mlterm, you may want to use a different
pattern, specifically the default, but without spacing:
`-p :regular:normal:slant=0`
This was built with [Zig 0.11.0-dev.3886+0c1bfe271](https://github.com/marler8997/zig-unofficial-releases#0110-dev38860c1bfe271-summary).
The intent is to rebuild with Zig 0.11 when released, but the version above
is close enough that it should work at that time.
Building
========
This is not fully `zig build` friendly, since it links to system libraries.
Specifically, you need to have [fontconfig](https://www.freedesktop.org/wiki/Software/fontconfig/)
and dependencies installed. I initially went down that rabbit hole, but it's
kind of a mess that I don't need for what is really a personal project.
To help with the build, a Dockerfile exists in this repository that can be used
to create a docker image with the appropriate zig version and system libraries.
the shell script `zig-via-docker` will then act as a drop in replacement
for installed `zig`, passing all commands through to the container. That script
is set up for podman (same as docker, but allows running without root)
and a docker image named `fontfinder`.
This is a personal project, so happy for others to use it, but if you want things
to improve, you will need to file a PR. ;-)

View File

@ -325,7 +325,7 @@ test "command line parses with long name no equals" {
test "command line parses with long name equals" { test "command line parses with long name equals" {
var log_level = std.testing.log_level; var log_level = std.testing.log_level;
defer std.testing.log_level = log_level; defer std.testing.log_level = log_level;
std.testing.log_level = .debug; // std.testing.log_level = .debug;
var it = try std.process.ArgIteratorGeneral(.{}).init(std.testing.allocator, "--groups=Latin-1"); var it = try std.process.ArgIteratorGeneral(.{}).init(std.testing.allocator, "--groups=Latin-1");
defer it.deinit(); defer it.deinit();
const options = try parseCommandLine(&it); const options = try parseCommandLine(&it);
@ -367,11 +367,27 @@ test "Get ranges" {
var log_level = std.testing.log_level; var log_level = std.testing.log_level;
std.testing.log_level = .debug; std.testing.log_level = .debug;
defer std.testing.log_level = log_level; defer std.testing.log_level = log_level;
try outputRange(std.testing.allocator, matched_range.starting_codepoint, matched_range.ending_codepoint, arr, false, al.writer()); try outputRange(
std.testing.allocator,
matched_range.starting_codepoint,
matched_range.ending_codepoint,
arr,
false,
false,
al.writer(),
);
try std.testing.expectEqualStrings(al.items, "U+20-7e=DejaVu Sans Mono\n"); try std.testing.expectEqualStrings(al.items, "U+20-7e=DejaVu Sans Mono\n");
std.log.debug("\nwhole unicode space:", .{}); std.log.debug("\nwhole unicode space:", .{});
try outputRange(std.testing.allocator, 0, max_unicode, arr, false, al.writer()); try outputRange(
std.testing.allocator,
0,
max_unicode,
arr,
false,
false,
al.writer(),
);
const expected = const expected =
\\U+20-7e=DejaVu Sans Mono \\U+20-7e=DejaVu Sans Mono
\\U+20-7e=DejaVu Sans Mono \\U+20-7e=DejaVu Sans Mono