[cairo] Last minute removal of functionality (using "cairo" to select internal font)

Carl Worth cworth at cworth.org
Wed Oct 29 16:37:48 PDT 2008


As I was typing up release notes for 1.8.2 I noticed a problem:

The new internal font face feature was stealing the font family name of
"cairo" for itself. This could break past or future users wanting to sue
cairo_select_font_face to get at some cairo.ttf for example.

Now, I know we've never fully documented what the font family argument
does, but it does do reasonable things on most systems, and stealing
this name just doesn't seem right.

We had a chat on IRC covering various options:

1. Invent some less-likely-to-clash name such as "/cairo", (though we
had much more fun with names like "I♥cairo").

2. Rip out the internal font face altogether, (Behdad had actually
proposed as much in the first final call for 1.8.2 changes---before
Chris fixed some bugs in it).

3. Leave the internal font face implementation in place, but just remove
the ability to explicitly select it. It would still be there for people
wanting to build cairo without an external font system.

Without much time for an email discussion, I went ahead and implemented
(3). The change to cairo itself is quite small and seems correct (see
below). I also followed it up with the removal of the "twin" test and
perf cases.

Unless someone speaks up with some clear objection quite soon, then I'll
go ahead and push out 1.8.2 with this change. I'm sorry that it hasn't
been sitting on master for a couple of days yet.

-Carl

From a824d284be23793a5c48b9ae833dcb7b2d5fff80 Mon Sep 17 00:00:00 2001
From: Carl Worth <cworth at cworth.org>
Date: Wed, 29 Oct 2008 16:21:42 -0700
Subject: [PATCH] Remove the ability to select the internal font face with a name of "cairo".

It's not fair to steal this name from the namespace of family names.
There are definitely cairo.ttf files that exist out there, and people
may already be using these, (or may use them in the future), with
cairo_select_font_face and a family name of "cairo".

In place of this, we'll want to come up with some other new, and
documented API for selecting the internal font face.
---
 src/cairo-font-face.c |    6 ++----
 src/cairoint.h        |    1 -
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/cairo-font-face.c b/src/cairo-font-face.c
index 6cea395..30c8d9f 100644
--- a/src/cairo-font-face.c
+++ b/src/cairo-font-face.c
@@ -578,8 +578,7 @@ _cairo_toy_font_face_scaled_font_get_implementation (void                *abstra
     if (font_face->base.status)
 	return font_face->base.status;
 
-    if (CAIRO_SCALED_FONT_BACKEND_DEFAULT != &_cairo_user_scaled_font_backend &&
-	0 != strcmp (font_face->family, CAIRO_USER_FONT_FAMILY_DEFAULT))
+    if (CAIRO_SCALED_FONT_BACKEND_DEFAULT != &_cairo_user_scaled_font_backend)
     {
 	const cairo_scaled_font_backend_t * backend = CAIRO_SCALED_FONT_BACKEND_DEFAULT;
 
@@ -618,8 +617,7 @@ _cairo_toy_font_face_scaled_font_create (void                *abstract_font_face
     if (status)
 	return status;
 
-    if (CAIRO_SCALED_FONT_BACKEND_DEFAULT != &_cairo_user_scaled_font_backend &&
-	0 != strcmp (font_face->family, CAIRO_USER_FONT_FAMILY_DEFAULT))
+    if (CAIRO_SCALED_FONT_BACKEND_DEFAULT != &_cairo_user_scaled_font_backend)
     {
 	const cairo_scaled_font_backend_t * backend = CAIRO_SCALED_FONT_BACKEND_DEFAULT;
 
diff --git a/src/cairoint.h b/src/cairoint.h
index a1d3f3d..a00e6e1 100644
--- a/src/cairoint.h
+++ b/src/cairoint.h
@@ -938,7 +938,6 @@ typedef struct _cairo_traps {
 #define CAIRO_WIN32_FONT_FAMILY_DEFAULT "Arial"
 #define CAIRO_QUARTZ_FONT_FAMILY_DEFAULT  "Helvetica"
 #define CAIRO_FT_FONT_FAMILY_DEFAULT     ""
-#define CAIRO_USER_FONT_FAMILY_DEFAULT     "cairo"
 
 #if   CAIRO_HAS_WIN32_FONT
 
-- 
1.5.6.5


-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.cairographics.org/archives/cairo/attachments/20081029/62f9f222/attachment.pgp 


More information about the cairo mailing list