[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 8aad4cee32: Fix some problems with Haiku font display
From: |
Po Lu |
Subject: |
master 8aad4cee32: Fix some problems with Haiku font display |
Date: |
Sat, 8 Jan 2022 22:27:38 -0500 (EST) |
branch: master
commit 8aad4cee326dff4c63b05eaf290c34a397067b93
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Fix some problems with Haiku font display
* src/haiku_font_support.cc (BFont_char_bounds): Fix rounding
errors.
(BFont_open_pattern): Set size before setting family and style.
---
src/haiku_font_support.cc | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/src/haiku_font_support.cc b/src/haiku_font_support.cc
index 6ea10b2e47..e6d21c28fe 100644
--- a/src/haiku_font_support.cc
+++ b/src/haiku_font_support.cc
@@ -159,9 +159,9 @@ BFont_char_bounds (void *font, const char *mb_str, int
*advance,
ft->GetEdges (mb_str, 1, &edge_info);
ft->GetEscapements (mb_str, 1, &escapement);
- *advance = std::ceil (escapement * size);
- *lb = std::ceil (edge_info.left * size);
- *rb = *advance + std::ceil (edge_info.right * size);
+ *advance = std::lrint (escapement * size);
+ *lb = std::lrint (edge_info.left * size);
+ *rb = *advance + std::lrint (edge_info.right * size);
}
/* The same, but for a variable amount of chars. */
@@ -534,14 +534,15 @@ BFont_open_pattern (struct haiku_font_pattern *pat, void
**font, float size)
font_family_style_matches_p (name, NULL, flags, pat, 1))
{
BFont *ft = new BFont;
+ ft->SetSize (size);
+ ft->SetEncoding (B_UNICODE_UTF8);
+ ft->SetSpacing (B_BITMAP_SPACING);
+
if (ft->SetFamilyAndStyle (name, NULL) != B_OK)
{
delete ft;
return 1;
}
- ft->SetSize (size);
- ft->SetEncoding (B_UNICODE_UTF8);
- ft->SetSpacing (B_BITMAP_SPACING);
*font = (void *) ft;
return 0;
}
@@ -553,14 +554,15 @@ BFont_open_pattern (struct haiku_font_pattern *pat, void
**font, float size)
font_family_style_matches_p (name, (char *) &sname, flags, pat))
{
BFont *ft = new BFont;
+ ft->SetSize (size);
+ ft->SetEncoding (B_UNICODE_UTF8);
+ ft->SetSpacing (B_BITMAP_SPACING);
+
if (ft->SetFamilyAndStyle (name, sname) != B_OK)
{
delete ft;
return 1;
}
- ft->SetSize (size);
- ft->SetEncoding (B_UNICODE_UTF8);
- ft->SetSpacing (B_BITMAP_SPACING);
*font = (void *) ft;
return 0;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 8aad4cee32: Fix some problems with Haiku font display,
Po Lu <=