mirror of
https://github.com/aharabada/glitchy-engine-beef.git
synced 2026-09-05 13:01:52 +00:00
Updated Freetype
This commit is contained in:
@@ -40,6 +40,7 @@ namespace GlitchyEngine.Renderer.Text
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal FT_Face _face ~ FreeType.Done_Face(_face);
|
internal FT_Face _face ~ FreeType.Done_Face(_face);
|
||||||
|
internal hb_font_t* _harfBuzzFont ~ hb_font_destroy(_);
|
||||||
|
|
||||||
private Font _fallback ~ _?.ReleaseRef();
|
private Font _fallback ~ _?.ReleaseRef();
|
||||||
|
|
||||||
@@ -63,10 +64,6 @@ namespace GlitchyEngine.Renderer.Text
|
|||||||
|
|
||||||
internal double _range = 4.0;
|
internal double _range = 4.0;
|
||||||
|
|
||||||
private hb_blob_t* blob ~ hb_blob_destroy(_);
|
|
||||||
private hb_face_t* face ~ hb_face_destroy(_);
|
|
||||||
private hb_font_t* font ~ hb_font_destroy(_);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets or sets the fallback Font for this Font.
|
* Gets or sets the fallback Font for this Font.
|
||||||
* The Fallback font will be used to render Glyphs that are not defined in the current font.
|
* The Fallback font will be used to render Glyphs that are not defined in the current font.
|
||||||
@@ -144,11 +141,8 @@ namespace GlitchyEngine.Renderer.Text
|
|||||||
|
|
||||||
// HarfBuzz
|
// HarfBuzz
|
||||||
{
|
{
|
||||||
blob = hb_blob_create_from_file(fontPath.CStr()); /* or hb_blob_create_from_file_or_fail() */
|
_harfBuzzFont = hb_ft_font_create_referenced(_face);
|
||||||
face = hb_face_create(blob, 0);
|
hb_font_set_scale(_harfBuzzFont, (.)fontSize * 64, (.)fontSize * 64);
|
||||||
font = hb_font_create(face);
|
|
||||||
|
|
||||||
hb_font_set_scale(font, (.)fontSize * 64, (.)fontSize * 64);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//TestMSDF();
|
//TestMSDF();
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ namespace GlitchyEngine.Renderer.Text
|
|||||||
hb_buffer_set_language(buf, hb_language_from_string("en".CStr(), -1));
|
hb_buffer_set_language(buf, hb_language_from_string("en".CStr(), -1));
|
||||||
|
|
||||||
// 3. Get the face
|
// 3. Get the face
|
||||||
hb_font_t* hb_font = font.[Friend]font;
|
hb_font_t* hb_font = font._harfBuzzFont;
|
||||||
|
|
||||||
// 4. Shape:
|
// 4. Shape:
|
||||||
hb_shape(hb_font, buf, null, 0);
|
hb_shape(hb_font, buf, null, 0);
|
||||||
@@ -180,12 +180,14 @@ namespace GlitchyEngine.Renderer.Text
|
|||||||
Color glyphColor = glyphDesc.IsBitmap ? bitmapColor : fontColor;
|
Color glyphColor = glyphDesc.IsBitmap ? bitmapColor : fontColor;
|
||||||
|
|
||||||
texRect /= Vector4(atlasSize, atlasSize);
|
texRect /= Vector4(atlasSize, atlasSize);
|
||||||
|
|
||||||
Renderer2D.DrawQuad(Vector3(viewportRect.X + viewportRect.Z / 2, viewportRect.Y + viewportRect.W / 2, 1), .(viewportRect.Z, viewportRect.W), 0, .Red);
|
// Show quads
|
||||||
|
// Renderer2D.DrawQuad(Vector3(viewportRect.X + viewportRect.Z / 2, viewportRect.Y + viewportRect.W / 2, 1), .(viewportRect.Z, viewportRect.W), 0, .Red);
|
||||||
|
|
||||||
Renderer2D.DrawQuad(Vector2(viewportRect.X + viewportRect.Z / 2, viewportRect.Y + viewportRect.W / 2), .(viewportRect.Z, viewportRect.W), 0, atlas, glyphColor, texRect);
|
Renderer2D.DrawQuad(Vector2(viewportRect.X + viewportRect.Z / 2, viewportRect.Y + viewportRect.W / 2), .(viewportRect.Z, viewportRect.W), 0, atlas, glyphColor, texRect);
|
||||||
|
|
||||||
Renderer2D.DrawQuad(Vector3(penPosition, baseline, -1), .(1), 0, .Green);
|
// Show pen positions
|
||||||
|
// Renderer2D.DrawQuad(Vector3(penPosition, baseline, -1), .(1), 0, .Green);
|
||||||
|
|
||||||
penPosition += (x_advance / 64) * glyphFontScale;
|
penPosition += (x_advance / 64) * glyphFontScale;
|
||||||
baseline += (y_advance / 64) * glyphFontScale;
|
baseline += (y_advance / 64) * glyphFontScale;
|
||||||
|
|||||||
Vendored
+1
-1
Submodule GlitchyEngine/vendor/freetype updated: f41e3fd511...e37574ca4e
@@ -69,7 +69,7 @@ namespace Sandbox
|
|||||||
var japanese = new Font("C:\\Windows\\Fonts\\YuGothM.ttc", 64, true, '\0', 1);
|
var japanese = new Font("C:\\Windows\\Fonts\\YuGothM.ttc", 64, true, '\0', 1);
|
||||||
var emojis = new Font("C:\\Windows\\Fonts\\seguiemj.ttf", 64, true, '😂' - 10, 1);
|
var emojis = new Font("C:\\Windows\\Fonts\\seguiemj.ttf", 64, true, '😂' - 10, 1);
|
||||||
var mathstuff = new Font("C:\\Windows\\Fonts\\cambria.ttc", 64, true, 'α', 1);
|
var mathstuff = new Font("C:\\Windows\\Fonts\\cambria.ttc", 64, true, 'α', 1);
|
||||||
var cascadiaCode = new Font("C:\\Windows\\Fonts\\CascadiaCode.ttf", 32, true, 'A', 1);
|
var cascadiaCode = new Font("C:\\Windows\\Fonts\\CascadiaCode.ttf", 64, true, 'A', 1);
|
||||||
fonty.Fallback = japanese..ReleaseRefNoDelete();
|
fonty.Fallback = japanese..ReleaseRefNoDelete();
|
||||||
japanese.Fallback = emojis..ReleaseRefNoDelete();
|
japanese.Fallback = emojis..ReleaseRefNoDelete();
|
||||||
emojis.Fallback = mathstuff..ReleaseRefNoDelete();
|
emojis.Fallback = mathstuff..ReleaseRefNoDelete();
|
||||||
@@ -114,7 +114,8 @@ namespace Sandbox
|
|||||||
|
|
||||||
Renderer2D.DrawCircle(Vector3(-2, -2, -2f), Vector2(1), .GreenYellow);
|
Renderer2D.DrawCircle(Vector3(-2, -2, -2f), Vector2(1), .GreenYellow);
|
||||||
|
|
||||||
FontRenderer.DrawText(fonty.Fallback.Fallback.Fallback.Fallback, "Hallö! gjy ÄAwww www", 0, 0, 64, .White, .White); // Hallo! gjy
|
//FontRenderer.DrawText(fonty.Fallback.Fallback.Fallback.Fallback, "Hallö! gjy ÄAwww www <--||-->", 0, 0, 64, .White, .White); // Hallo! gjy
|
||||||
|
FontRenderer.DrawText(fonty, "Hallö!\n gjy ÄAwww www <--||-->", 0, 0, 128, .White, .White);
|
||||||
|
|
||||||
Renderer2D.EndScene();
|
Renderer2D.EndScene();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user