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| {
|
if (config.@"font-family") |family| {
|
||||||
var disco_it = try disco.discover(.{
|
var disco_it = try disco.discover(.{
|
||||||
.family = family,
|
.family = family,
|
||||||
|
.style = config.@"font-style",
|
||||||
.size = font_size.points,
|
.size = font_size.points,
|
||||||
.variations = config.@"font-variation".list.items,
|
.variations = config.@"font-variation".list.items,
|
||||||
});
|
});
|
||||||
@ -250,6 +251,7 @@ pub fn init(
|
|||||||
if (config.@"font-family-bold") |family| {
|
if (config.@"font-family-bold") |family| {
|
||||||
var disco_it = try disco.discover(.{
|
var disco_it = try disco.discover(.{
|
||||||
.family = family,
|
.family = family,
|
||||||
|
.style = config.@"font-style-bold",
|
||||||
.size = font_size.points,
|
.size = font_size.points,
|
||||||
.bold = true,
|
.bold = true,
|
||||||
.variations = config.@"font-variation-bold".list.items,
|
.variations = config.@"font-variation-bold".list.items,
|
||||||
@ -263,6 +265,7 @@ pub fn init(
|
|||||||
if (config.@"font-family-italic") |family| {
|
if (config.@"font-family-italic") |family| {
|
||||||
var disco_it = try disco.discover(.{
|
var disco_it = try disco.discover(.{
|
||||||
.family = family,
|
.family = family,
|
||||||
|
.style = config.@"font-style-italic",
|
||||||
.size = font_size.points,
|
.size = font_size.points,
|
||||||
.italic = true,
|
.italic = true,
|
||||||
.variations = config.@"font-variation-italic".list.items,
|
.variations = config.@"font-variation-italic".list.items,
|
||||||
@ -276,6 +279,7 @@ pub fn init(
|
|||||||
if (config.@"font-family-bold-italic") |family| {
|
if (config.@"font-family-bold-italic") |family| {
|
||||||
var disco_it = try disco.discover(.{
|
var disco_it = try disco.discover(.{
|
||||||
.family = family,
|
.family = family,
|
||||||
|
.style = config.@"font-style-bold-italic",
|
||||||
.size = font_size.points,
|
.size = font_size.points,
|
||||||
.bold = true,
|
.bold = true,
|
||||||
.italic = true,
|
.italic = true,
|
||||||
|
@ -14,6 +14,9 @@ pub const Config = struct {
|
|||||||
/// matching this family will be listed.
|
/// matching this family will be listed.
|
||||||
family: ?[:0]const u8 = null,
|
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
|
/// Font styles to search for. If this is set, then only fonts that
|
||||||
/// match the given styles will be listed.
|
/// match the given styles will be listed.
|
||||||
bold: bool = false,
|
bold: bool = false,
|
||||||
@ -84,6 +87,7 @@ fn runArgs(alloc_gpa: Allocator, argsIter: anytype) !u8 {
|
|||||||
defer disco.deinit();
|
defer disco.deinit();
|
||||||
var disco_it = try disco.discover(.{
|
var disco_it = try disco.discover(.{
|
||||||
.family = config.family,
|
.family = config.family,
|
||||||
|
.style = config.style,
|
||||||
.bold = config.bold,
|
.bold = config.bold,
|
||||||
.italic = config.italic,
|
.italic = config.italic,
|
||||||
});
|
});
|
||||||
|
@ -29,6 +29,17 @@ const c = @cImport({
|
|||||||
@"font-family-italic": ?[:0]const u8 = null,
|
@"font-family-italic": ?[:0]const u8 = null,
|
||||||
@"font-family-bold-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
|
/// Apply a font feature. This can be repeated multiple times to enable
|
||||||
/// multiple font features. You can NOT set multiple font features with
|
/// multiple font features. You can NOT set multiple font features with
|
||||||
/// a single value (yet).
|
/// a single value (yet).
|
||||||
|
@ -257,6 +257,7 @@ pub fn indexForCodepoint(
|
|||||||
.size = self.size.points,
|
.size = self.size.points,
|
||||||
.bold = style == .bold or style == .bold_italic,
|
.bold = style == .bold or style == .bold_italic,
|
||||||
.italic = style == .italic or style == .bold_italic,
|
.italic = style == .italic or style == .bold_italic,
|
||||||
|
.monospace = false,
|
||||||
}) catch break :discover;
|
}) catch break :discover;
|
||||||
defer disco_it.deinit();
|
defer disco_it.deinit();
|
||||||
|
|
||||||
|
@ -31,6 +31,12 @@ pub const Descriptor = struct {
|
|||||||
/// fontconfig pattern, such as "Fira Code-14:bold".
|
/// fontconfig pattern, such as "Fira Code-14:bold".
|
||||||
family: ?[:0]const u8 = null,
|
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.
|
/// A codepoint that this font must be able to render.
|
||||||
codepoint: u32 = 0,
|
codepoint: u32 = 0,
|
||||||
|
|
||||||
@ -58,6 +64,9 @@ pub const Descriptor = struct {
|
|||||||
if (self.family) |family| {
|
if (self.family) |family| {
|
||||||
assert(pat.add(.family, .{ .string = family }, false));
|
assert(pat.add(.family, .{ .string = family }, false));
|
||||||
}
|
}
|
||||||
|
if (self.style) |style| {
|
||||||
|
assert(pat.add(.style, .{ .string = style }, false));
|
||||||
|
}
|
||||||
if (self.codepoint > 0) {
|
if (self.codepoint > 0) {
|
||||||
const cs = fontconfig.CharSet.create();
|
const cs = fontconfig.CharSet.create();
|
||||||
defer cs.destroy();
|
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
|
// Codepoint support
|
||||||
if (self.codepoint > 0) {
|
if (self.codepoint > 0) {
|
||||||
const cs = try macos.foundation.CharacterSet.createWithCharactersInRange(.{
|
const cs = try macos.foundation.CharacterSet.createWithCharactersInRange(.{
|
||||||
|
Reference in New Issue
Block a user