Home » U++ Library support » U++ Libraries and TheIDE: i18n, Unicode and Internationalization » Basic character set analyzer
Re: Basic character set analyzer [message #19997 is a reply to message #19996] |
Sun, 08 February 2009 12:55 |
cbpporter
Messages: 1401 Registered: September 2007
|
Ultimate Contributor |
|
|
A little info about the second and final change I need to Draw.
I've added some fields to CharMetrics and some methods to FontInfo. These changes are ad-hoc hacks, and I really need a better integrated solution with proper names.
struct CharMetrics : Moveable<CharMetrics> {
int width;
int lspc;
int rspc;
int y;
int height;
int x;
int ew;
bool operator==(const CharMetrics& b) const
{ return width == b.width && lspc == b.lspc && rspc == b.rspc; }
};
int GetY(int c) const { return GetCM(c).y; }
int GetX(int c) const { return GetCM(c).x; }
int GetH(int c) const { return GetCM(c).height; }
int GetW(int c) const { return GetCM(c).ew; }
These methods are used to determine the exact glyph bounding box, using this method:
inline Rect GetCharRect(int x, int y, int buff, const FontInfo& fi)
{
return Rect(x - fi.GetX(buff), y - fi.GetY(buff) + fi.GetAscent(), x - fi.GetX(buff) + fi.GetW(buff), y - fi.GetY(buff) + fi.GetAscent() + fi.GetH(buff));
}
Also:
void FontInfo::Data::GetMetrics(CharMetrics *t, int from, int count)
{
DrawLock __;
LTIMING("GetMetrics");
LLOG("GetMetrics " << font << " " << from << ", " << count);
if(xftfont) {
for(int i = 0; i < count; i++) {
LTIMING("XftTextExtents16");
wchar h = from + i;
XGlyphInfo info;
XftTextExtents16(Xdisplay, xftfont0, &h, 1, &info);
t[i].width = info.xOff;
t[i].lspc = -info.x;
t[i].rspc = info.xOff - info.width + info.x;
t[i].y = info.y;
t[i].height = info.height;
t[i].x = info.x;
t[i].ew = info.width;
}
}
}
I don't know if we should cache this.
I'm posting this to show what I need, but before we apply it I really need to clean this up.
|
|
|
|
|
Basic character set analyzer
|
|
|
Re: Basic character set analyzer
|
|
|
Re: Basic character set analyzer
|
|
|
Re: Basic character set analyzer
By: mirek on Thu, 18 December 2008 11:34
|
|
|
Re: Basic character set analyzer
|
|
|
Re: Basic character set analyzer
By: mirek on Sat, 24 January 2009 14:00
|
|
|
Re: Basic character set analyzer
|
|
|
Re: Basic character set analyzer
By: mirek on Sun, 25 January 2009 10:56
|
|
|
Re: Basic character set analyzer
|
|
|
Re: Basic character set analyzer
By: mirek on Fri, 30 January 2009 08:53
|
|
|
Re: Basic character set analyzer
|
|
|
Re: Basic character set analyzer
By: mirek on Fri, 30 January 2009 09:28
|
|
|
Re: Basic character set analyzer
|
|
|
Re: Basic character set analyzer
|
|
|
Re: Basic character set analyzer
By: mr_ped on Sat, 31 January 2009 14:18
|
|
|
Re: Basic character set analyzer
|
|
|
Re: Basic character set analyzer
|
|
|
Re: Basic character set analyzer
By: mirek on Mon, 02 February 2009 09:40
|
|
|
Re: Basic character set analyzer
|
|
|
Re: Basic character set analyzer
By: mirek on Sat, 07 February 2009 14:53
|
|
|
Re: Basic character set analyzer
|
|
|
Re: Basic character set analyzer
|
|
|
Re: Basic character set analyzer
By: mirek on Mon, 09 February 2009 08:47
|
|
|
Re: Basic character set analyzer
|
|
|
Re: Basic character set analyzer
By: mirek on Mon, 09 February 2009 08:42
|
Goto Forum:
Current Time: Wed May 15 05:52:01 CEST 2024
Total time taken to generate the page: 0.02675 seconds
|