mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-15 00:06:09 +03:00
@ -238,6 +238,7 @@ pub fn init(
|
||||
if (config.@"font-family") |family| {
|
||||
var disco_it = try disco.discover(.{
|
||||
.family = family,
|
||||
.style = config.@"font-style",
|
||||
.size = font_size.points,
|
||||
.variations = config.@"font-variation".list.items,
|
||||
});
|
||||
@ -250,6 +251,7 @@ pub fn init(
|
||||
if (config.@"font-family-bold") |family| {
|
||||
var disco_it = try disco.discover(.{
|
||||
.family = family,
|
||||
.style = config.@"font-style-bold",
|
||||
.size = font_size.points,
|
||||
.bold = true,
|
||||
.variations = config.@"font-variation-bold".list.items,
|
||||
@ -263,6 +265,7 @@ pub fn init(
|
||||
if (config.@"font-family-italic") |family| {
|
||||
var disco_it = try disco.discover(.{
|
||||
.family = family,
|
||||
.style = config.@"font-style-italic",
|
||||
.size = font_size.points,
|
||||
.italic = true,
|
||||
.variations = config.@"font-variation-italic".list.items,
|
||||
@ -276,6 +279,7 @@ pub fn init(
|
||||
if (config.@"font-family-bold-italic") |family| {
|
||||
var disco_it = try disco.discover(.{
|
||||
.family = family,
|
||||
.style = config.@"font-style-bold-italic",
|
||||
.size = font_size.points,
|
||||
.bold = true,
|
||||
.italic = true,
|
||||
|
@ -14,6 +14,9 @@ pub const Config = struct {
|
||||
/// matching this family will be listed.
|
||||
family: ?[:0]const u8 = null,
|
||||
|
||||
/// The style name to search for.
|
||||
style: ?[:0]const u8 = null,
|
||||
|
||||
/// Font styles to search for. If this is set, then only fonts that
|
||||
/// match the given styles will be listed.
|
||||
bold: bool = false,
|
||||
@ -84,6 +87,7 @@ fn runArgs(alloc_gpa: Allocator, argsIter: anytype) !u8 {
|
||||
defer disco.deinit();
|
||||
var disco_it = try disco.discover(.{
|
||||
.family = config.family,
|
||||
.style = config.style,
|
||||
.bold = config.bold,
|
||||
.italic = config.italic,
|
||||
});
|
||||
|
@ -29,6 +29,17 @@ const c = @cImport({
|
||||
@"font-family-italic": ?[:0]const u8 = null,
|
||||
@"font-family-bold-italic": ?[:0]const u8 = null,
|
||||
|
||||
/// The named font style to use for each of the requested terminal font
|
||||
/// styles. This looks up the style based on the font style string advertised
|
||||
/// by the font itself. For example, "Iosevka Heavy" has a style of "Heavy".
|
||||
///
|
||||
/// These are only valid if there is an exact font-family also specified.
|
||||
/// If no font-family is specified, then the font-style is ignored.
|
||||
@"font-style": ?[:0]const u8 = null,
|
||||
@"font-style-bold": ?[:0]const u8 = null,
|
||||
@"font-style-italic": ?[:0]const u8 = null,
|
||||
@"font-style-bold-italic": ?[:0]const u8 = null,
|
||||
|
||||
/// Apply a font feature. This can be repeated multiple times to enable
|
||||
/// multiple font features. You can NOT set multiple font features with
|
||||
/// a single value (yet).
|
||||
|
@ -257,6 +257,7 @@ pub fn indexForCodepoint(
|
||||
.size = self.size.points,
|
||||
.bold = style == .bold or style == .bold_italic,
|
||||
.italic = style == .italic or style == .bold_italic,
|
||||
.monospace = false,
|
||||
}) catch break :discover;
|
||||
defer disco_it.deinit();
|
||||
|
||||
|
@ -31,6 +31,12 @@ pub const Descriptor = struct {
|
||||
/// fontconfig pattern, such as "Fira Code-14:bold".
|
||||
family: ?[:0]const u8 = null,
|
||||
|
||||
/// Specific font style to search for. This will filter the style
|
||||
/// string the font advertises. The "bold/italic" booleans later in this
|
||||
/// struct filter by the style trait the font has, not the string, so
|
||||
/// these can be used in conjunction or not.
|
||||
style: ?[:0]const u8 = null,
|
||||
|
||||
/// A codepoint that this font must be able to render.
|
||||
codepoint: u32 = 0,
|
||||
|
||||
@ -58,6 +64,9 @@ pub const Descriptor = struct {
|
||||
if (self.family) |family| {
|
||||
assert(pat.add(.family, .{ .string = family }, false));
|
||||
}
|
||||
if (self.style) |style| {
|
||||
assert(pat.add(.style, .{ .string = style }, false));
|
||||
}
|
||||
if (self.codepoint > 0) {
|
||||
const cs = fontconfig.CharSet.create();
|
||||
defer cs.destroy();
|
||||
@ -99,6 +108,16 @@ pub const Descriptor = struct {
|
||||
);
|
||||
}
|
||||
|
||||
// Style
|
||||
if (self.style) |style_bytes| {
|
||||
const style = try macos.foundation.String.createWithBytes(style_bytes, .utf8, false);
|
||||
defer style.release();
|
||||
attrs.setValue(
|
||||
macos.text.FontAttribute.style_name.key(),
|
||||
style,
|
||||
);
|
||||
}
|
||||
|
||||
// Codepoint support
|
||||
if (self.codepoint > 0) {
|
||||
const cs = try macos.foundation.CharacterSet.createWithCharactersInRange(.{
|
||||
|
Reference in New Issue
Block a user