chore: housekeeping — linter & formatter setup
Add .prettierrc.json, .markdownlint.json, .yamllint.yaml, .gitattributes Run CSharpier, Prettier and markdownlint across the entire codebase. No logic changes — formatting, using order and line endings only.
This commit is contained in:
+108
-60
@@ -1,10 +1,10 @@
|
||||
using Dalamud;
|
||||
using Dalamud.Bindings.ImGui;
|
||||
using Dalamud.Interface;
|
||||
using Dalamud.Interface.FontIdentifier;
|
||||
using Dalamud.Interface.GameFonts;
|
||||
using Dalamud.Interface.ManagedFontAtlas;
|
||||
using Dalamud.Interface.Utility;
|
||||
using Dalamud.Bindings.ImGui;
|
||||
|
||||
namespace HellionChat;
|
||||
|
||||
@@ -23,9 +23,22 @@ public class FontManager
|
||||
|
||||
public static readonly HashSet<float> AxisFontSizeList =
|
||||
[
|
||||
9.6f, 10f, 12f, 14f, 16f,
|
||||
18f, 18.4f, 20f, 23f, 34f,
|
||||
36f, 40f, 45f, 46f, 68f, 90f,
|
||||
9.6f,
|
||||
10f,
|
||||
12f,
|
||||
14f,
|
||||
16f,
|
||||
18f,
|
||||
18.4f,
|
||||
20f,
|
||||
23f,
|
||||
34f,
|
||||
36f,
|
||||
40f,
|
||||
45f,
|
||||
46f,
|
||||
68f,
|
||||
90f,
|
||||
];
|
||||
|
||||
/// <summary>
|
||||
@@ -41,8 +54,11 @@ public class FontManager
|
||||
if (HellionFontBytes is not null)
|
||||
return HellionFontBytes;
|
||||
|
||||
using var stream = typeof(FontManager).Assembly.GetManifestResourceStream("HellionFont.ttf")
|
||||
?? throw new FileNotFoundException("Hellion font resource not embedded in the assembly");
|
||||
using var stream =
|
||||
typeof(FontManager).Assembly.GetManifestResourceStream("HellionFont.ttf")
|
||||
?? throw new FileNotFoundException(
|
||||
"Hellion font resource not embedded in the assembly"
|
||||
);
|
||||
using var ms = new MemoryStream();
|
||||
stream.CopyTo(ms);
|
||||
HellionFontBytes = ms.ToArray();
|
||||
@@ -66,8 +82,8 @@ public class FontManager
|
||||
if (chars[i] == 0)
|
||||
break;
|
||||
|
||||
for (var j = (uint) chars[i]; j <= chars[i + 1]; j++)
|
||||
builder.AddChar((ushort) j);
|
||||
for (var j = (uint)chars[i]; j <= chars[i + 1]; j++)
|
||||
builder.AddChar((ushort)j);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,7 +101,7 @@ public class FontManager
|
||||
|
||||
// "Enclosed Alphanumerics" (partial) https://www.compart.com/en/unicode/block/U+2460
|
||||
for (var i = 0x2460; i <= 0x24B5; i++)
|
||||
builder.AddChar((char) i);
|
||||
builder.AddChar((char)i);
|
||||
|
||||
builder.AddChar('⓪');
|
||||
return builder.BuildRangesToArray();
|
||||
@@ -117,66 +133,84 @@ public class FontManager
|
||||
{
|
||||
SetUpRanges();
|
||||
|
||||
Axis = Plugin.Interface.UiBuilder.FontAtlas.NewGameFontHandle(new GameFontStyle(GameFontFamily.Axis, SizeInPx(Plugin.Config.FontSizeV2)));
|
||||
AxisItalic = Plugin.Interface.UiBuilder.FontAtlas.NewGameFontHandle(new GameFontStyle(GameFontFamily.Axis, SizeInPx(Plugin.Config.FontSizeV2))
|
||||
{
|
||||
SkewStrength = SizeInPx(Plugin.Config.FontSizeV2) / 6
|
||||
});
|
||||
Axis = Plugin.Interface.UiBuilder.FontAtlas.NewGameFontHandle(
|
||||
new GameFontStyle(GameFontFamily.Axis, SizeInPx(Plugin.Config.FontSizeV2))
|
||||
);
|
||||
AxisItalic = Plugin.Interface.UiBuilder.FontAtlas.NewGameFontHandle(
|
||||
new GameFontStyle(GameFontFamily.Axis, SizeInPx(Plugin.Config.FontSizeV2))
|
||||
{
|
||||
SkewStrength = SizeInPx(Plugin.Config.FontSizeV2) / 6,
|
||||
}
|
||||
);
|
||||
|
||||
FontAwesome = Plugin.Interface.UiBuilder.FontAtlas.NewDelegateFontHandle(e =>
|
||||
{
|
||||
e.OnPreBuild(tk => tk.AddFontAwesomeIconFont(new SafeFontConfig { SizePx = GetFontSize() }));
|
||||
e.OnPreBuild(tk =>
|
||||
tk.AddFontAwesomeIconFont(new SafeFontConfig { SizePx = GetFontSize() })
|
||||
);
|
||||
e.OnPostBuild(tk => tk.FitRatio(tk.Font));
|
||||
});
|
||||
|
||||
RegularFont = Plugin.Interface.UiBuilder.FontAtlas.NewDelegateFontHandle(
|
||||
e => e.OnPreBuild(
|
||||
tk =>
|
||||
RegularFont = Plugin.Interface.UiBuilder.FontAtlas.NewDelegateFontHandle(e =>
|
||||
e.OnPreBuild(tk =>
|
||||
{
|
||||
// v1.2.0 — Bei aktiver Hellion-Schrift (Exo 2 ist Variable-Font)
|
||||
// wird die User-Schriftgröße aus FontSizeV2 als SizePt angewendet.
|
||||
// Der Bestand-Pfad nutzt weiter GlobalFontV2.SizePt aus dem
|
||||
// Custom-Font-Stack. Ohne diese Verzweigung war FontSizeV2 bei
|
||||
// UseHellionFont=true wirkungslos, was 4K-User mit größerer
|
||||
// Skalierung blockierte (Settings → Erscheinungsbild → Schriftarten).
|
||||
var basePt = Plugin.Config.UseHellionFont
|
||||
? Plugin.Config.FontSizeV2
|
||||
: Plugin.Config.GlobalFontV2.SizePt;
|
||||
var config = new SafeFontConfig { SizePt = basePt, GlyphRanges = Ranges };
|
||||
config.MergeFont = Plugin.Config.UseHellionFont
|
||||
? tk.AddFontFromMemory(GetHellionFontBytes(), config, "Hellion-Exo2")
|
||||
: AddFontWithFallback(tk, Plugin.Config.GlobalFontV2.FontId, config, "global");
|
||||
|
||||
config.SizePt = Plugin.Config.JapaneseFontV2.SizePt;
|
||||
config.GlyphRanges = JpRange;
|
||||
AddFontWithFallback(tk, Plugin.Config.JapaneseFontV2.FontId, config, "japanese");
|
||||
|
||||
config.SizePt = Plugin.Config.SymbolsFontSizeV2;
|
||||
tk.AddGameSymbol(config);
|
||||
|
||||
tk.Font = config.MergeFont;
|
||||
})
|
||||
);
|
||||
|
||||
if (Plugin.Config.ItalicEnabled)
|
||||
{
|
||||
ItalicFont = Plugin.Interface.UiBuilder.FontAtlas.NewDelegateFontHandle(e =>
|
||||
e.OnPreBuild(tk =>
|
||||
{
|
||||
// v1.2.0 — Bei aktiver Hellion-Schrift (Exo 2 ist Variable-Font)
|
||||
// wird die User-Schriftgröße aus FontSizeV2 als SizePt angewendet.
|
||||
// Der Bestand-Pfad nutzt weiter GlobalFontV2.SizePt aus dem
|
||||
// Custom-Font-Stack. Ohne diese Verzweigung war FontSizeV2 bei
|
||||
// UseHellionFont=true wirkungslos, was 4K-User mit größerer
|
||||
// Skalierung blockierte (Settings → Erscheinungsbild → Schriftarten).
|
||||
var basePt = Plugin.Config.UseHellionFont
|
||||
? Plugin.Config.FontSizeV2
|
||||
: Plugin.Config.GlobalFontV2.SizePt;
|
||||
var config = new SafeFontConfig {SizePt = basePt, GlyphRanges = Ranges};
|
||||
config.MergeFont = Plugin.Config.UseHellionFont
|
||||
? tk.AddFontFromMemory(GetHellionFontBytes(), config, "Hellion-Exo2")
|
||||
: AddFontWithFallback(tk, Plugin.Config.GlobalFontV2.FontId, config, "global");
|
||||
var config = new SafeFontConfig
|
||||
{
|
||||
SizePt = Plugin.Config.ItalicFontV2.SizePt,
|
||||
GlyphRanges = Ranges,
|
||||
};
|
||||
config.MergeFont = AddFontWithFallback(
|
||||
tk,
|
||||
Plugin.Config.ItalicFontV2.FontId,
|
||||
config,
|
||||
"italic"
|
||||
);
|
||||
|
||||
config.SizePt = Plugin.Config.JapaneseFontV2.SizePt;
|
||||
config.GlyphRanges = JpRange;
|
||||
AddFontWithFallback(tk, Plugin.Config.JapaneseFontV2.FontId, config, "japanese");
|
||||
AddFontWithFallback(
|
||||
tk,
|
||||
Plugin.Config.JapaneseFontV2.FontId,
|
||||
config,
|
||||
"japanese"
|
||||
);
|
||||
|
||||
config.SizePt = Plugin.Config.SymbolsFontSizeV2;
|
||||
tk.AddGameSymbol(config);
|
||||
|
||||
tk.Font = config.MergeFont;
|
||||
}
|
||||
));
|
||||
|
||||
if (Plugin.Config.ItalicEnabled)
|
||||
{
|
||||
ItalicFont = Plugin.Interface.UiBuilder.FontAtlas.NewDelegateFontHandle(
|
||||
e => e.OnPreBuild(
|
||||
tk =>
|
||||
{
|
||||
var config = new SafeFontConfig {SizePt = Plugin.Config.ItalicFontV2.SizePt, GlyphRanges = Ranges};
|
||||
config.MergeFont = AddFontWithFallback(tk, Plugin.Config.ItalicFontV2.FontId, config, "italic");
|
||||
|
||||
config.SizePt = Plugin.Config.JapaneseFontV2.SizePt;
|
||||
config.GlyphRanges = JpRange;
|
||||
AddFontWithFallback(tk, Plugin.Config.JapaneseFontV2.FontId, config, "japanese");
|
||||
|
||||
config.SizePt = Plugin.Config.SymbolsFontSizeV2;
|
||||
tk.AddGameSymbol(config);
|
||||
|
||||
tk.Font = config.MergeFont;
|
||||
}
|
||||
));
|
||||
})
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -191,21 +225,35 @@ public class FontManager
|
||||
/// pointing at a font the user uninstalled or that never existed on
|
||||
/// Linux (e.g. "Crimson Text") tears down the entire font atlas build.
|
||||
/// </summary>
|
||||
private static ImFontPtr AddFontWithFallback(IFontAtlasBuildToolkitPreBuild tk, IFontId fontId, SafeFontConfig config, string slot)
|
||||
private static ImFontPtr AddFontWithFallback(
|
||||
IFontAtlasBuildToolkitPreBuild tk,
|
||||
IFontId fontId,
|
||||
SafeFontConfig config,
|
||||
string slot
|
||||
)
|
||||
{
|
||||
try
|
||||
{
|
||||
return fontId.AddToBuildToolkit(tk, config);
|
||||
}
|
||||
catch (Exception e) when (e is FileNotFoundException or DirectoryNotFoundException or IOException)
|
||||
catch (Exception e)
|
||||
when (e is FileNotFoundException or DirectoryNotFoundException or IOException)
|
||||
{
|
||||
Plugin.Log.Warning(e, $"Configured {slot} font unavailable, falling back to NotoSansCjkRegular");
|
||||
Plugin.Log.Warning(
|
||||
e,
|
||||
$"Configured {slot} font unavailable, falling back to NotoSansCjkRegular"
|
||||
);
|
||||
var fallback = new DalamudAssetFontAndFamilyId(DalamudAsset.NotoSansCjkRegular);
|
||||
return fallback.AddToBuildToolkit(tk, config);
|
||||
}
|
||||
}
|
||||
|
||||
public static float SizeInPt(float px) => (float) (px * 3.0 / 4.0);
|
||||
public static float SizeInPx(float pt) => (float) (pt * 4.0 / 3.0);
|
||||
public static float GetFontSize() => Plugin.Config.FontsEnabled ? Plugin.Config.GlobalFontV2.SizePx : SizeInPx(Plugin.Config.FontSizeV2);
|
||||
public static float SizeInPt(float px) => (float)(px * 3.0 / 4.0);
|
||||
|
||||
public static float SizeInPx(float pt) => (float)(pt * 4.0 / 3.0);
|
||||
|
||||
public static float GetFontSize() =>
|
||||
Plugin.Config.FontsEnabled
|
||||
? Plugin.Config.GlobalFontV2.SizePx
|
||||
: SizeInPx(Plugin.Config.FontSizeV2);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user