aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-02-23 14:49:33 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-02-23 14:49:33 +0000
commit3681276c7847594ff7b175c01dbd6b5d87e9d286 (patch)
tree459e85bbc30005848d54934a41c26b5148b98080
parent5b31b0f1eaca0cdc3aa5697e8efa1baf68b0774e (diff)
update to add isFixedWidth attribute to typefaces
git-svn-id: http://skia.googlecode.com/svn/trunk@838 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r--src/ports/SkFontHost_linux.cpp36
1 files changed, 20 insertions, 16 deletions
diff --git a/src/ports/SkFontHost_linux.cpp b/src/ports/SkFontHost_linux.cpp
index e85dff4e2d..9aabce7db9 100644
--- a/src/ports/SkFontHost_linux.cpp
+++ b/src/ports/SkFontHost_linux.cpp
@@ -32,7 +32,8 @@
#define SK_FONT_FILE_PREFIX "/usr/share/fonts/truetype/msttcorefonts/"
#endif
-SkTypeface::Style find_name_and_style(SkStream* stream, SkString* name);
+SkTypeface::Style find_name_and_attributes(SkStream* stream, SkString* name,
+ bool* isFixedWidth);
static void GetFullPathForSysFonts(SkString* full, const char name[])
{
@@ -237,8 +238,8 @@ static void remove_from_names(FamilyRec* emptyFamily) {
class FamilyTypeface : public SkTypeface {
public:
- FamilyTypeface(Style style, bool sysFont, FamilyRec* family)
- : SkTypeface(style, sk_atomic_inc(&gUniqueFontID) + 1) {
+ FamilyTypeface(Style style, bool sysFont, FamilyRec* family, bool isFixedWidth)
+ : SkTypeface(style, sk_atomic_inc(&gUniqueFontID) + 1, isFixedWidth) {
fIsSysFont = sysFont;
SkAutoMutexAcquire ac(gFamilyMutex);
@@ -283,7 +284,7 @@ private:
*/
class EmptyTypeface : public FamilyTypeface {
public:
- EmptyTypeface() : INHERITED(SkTypeface::kNormal, true, NULL) {}
+ EmptyTypeface() : INHERITED(SkTypeface::kNormal, true, NULL, false) {}
// overrides
virtual SkStream* openStream() { return NULL; }
@@ -296,8 +297,8 @@ private:
class StreamTypeface : public FamilyTypeface {
public:
StreamTypeface(Style style, bool sysFont, FamilyRec* family,
- SkStream* stream)
- : INHERITED(style, sysFont, family) {
+ SkStream* stream, bool isFixedWidth)
+ : INHERITED(style, sysFont, family, isFixedWidth) {
stream->ref();
fStream = stream;
}
@@ -323,8 +324,8 @@ private:
class FileTypeface : public FamilyTypeface {
public:
FileTypeface(Style style, bool sysFont, FamilyRec* family,
- const char path[])
- : INHERITED(style, sysFont, family) {
+ const char path[], bool isFixedWidth)
+ : INHERITED(style, sysFont, family, isFixedWidth) {
fPath.set(path);
}
@@ -364,16 +365,16 @@ private:
///////////////////////////////////////////////////////////////////////////////
static bool get_name_and_style(const char path[], SkString* name,
- SkTypeface::Style* style) {
+ SkTypeface::Style* style, bool* isFixedWidth) {
SkMMAPStream stream(path);
if (stream.getLength() > 0) {
- *style = find_name_and_style(&stream, name);
+ *style = find_name_and_attributes(&stream, name, isFixedWidth);
return true;
}
else {
SkFILEStream stream(path);
if (stream.getLength() > 0) {
- *style = find_name_and_style(&stream, name);
+ *style = find_name_and_attributes(&stream, name, isFixedWidth);
return true;
}
}
@@ -402,10 +403,11 @@ static void load_system_fonts() {
SkString filename;
GetFullPathForSysFonts(&filename, name.c_str());
+ bool isFixedWidth;
SkString realname;
SkTypeface::Style style = SkTypeface::kNormal; // avoid uninitialized warning
- if (!get_name_and_style(filename.c_str(), &realname, &style)) {
+ if (!get_name_and_style(filename.c_str(), &realname, &style, &isFixedWidth)) {
SkDebugf("------ can't load <%s> as a font\n", filename.c_str());
continue;
}
@@ -424,7 +426,8 @@ static void load_system_fonts() {
(style,
true, // system-font (cannot delete)
family, // what family to join
- filename.c_str()) // filename
+ filename.c_str(),
+ isFixedWidth) // filename
);
if (NULL == family) {
@@ -586,11 +589,12 @@ SkTypeface* SkFontHost::CreateTypefaceFromStream(SkStream* stream) {
SkDELETE(stream);
return NULL;
}
-
+
+ bool isFixedWidth;
SkString name;
- SkTypeface::Style style = find_name_and_style(stream, &name);
+ SkTypeface::Style style = find_name_and_attributes(stream, &name, &isFixedWidth);
- return SkNEW_ARGS(StreamTypeface, (style, false, NULL, stream));
+ return SkNEW_ARGS(StreamTypeface, (style, false, NULL, stream, isFixedWidth));
}
SkTypeface* SkFontHost::CreateTypefaceFromFile(const char path[]) {