From 7533822f4cff54c8cb39ae96e0bff9f8b292c314 Mon Sep 17 00:00:00 2001
From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Tue, 10 May 2005 18:40:44 +0000
Subject: [PATCH] * lily/pango-font.cc (pango_item_string_stencil): add support
 for CID keyed font.

* scm/output-ps.scm (glyph-string): add support for CID keyed font.
---
 ChangeLog          |  7 +++++++
 lily/pango-font.cc | 14 +++++++++++++-
 scm/output-ps.scm  |  6 ++++--
 3 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 869bf4e406..7746df4016 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-05-10  Han-Wen Nienhuys  <hanwen@xs4all.nl>
+
+	* lily/pango-font.cc (pango_item_string_stencil): add support for
+	CID keyed font.
+
+	* scm/output-ps.scm (glyph-string): add support for CID keyed font.
+
 2005-05-10  Graham Percival  <gperlist@shaw.ca>
 
 	* Documentation/user/basic-notation.itely: add @ref.
diff --git a/lily/pango-font.cc b/lily/pango-font.cc
index 8af090c106..de7b835ab8 100644
--- a/lily/pango-font.cc
+++ b/lily/pango-font.cc
@@ -110,9 +110,21 @@ Pango_font::pango_item_string_stencil (PangoItem *item, String str, Real dx) con
       PangoGlyphGeometry ggeo = pgi->geometry;
 
       FT_Get_Glyph_Name (ftface, pg, glyph_name, GLYPH_NAME_LEN);
+
+
+      SCM char_id; 
+      if (glyph_name[0] == '\0')
+	{
+	  /*
+	    CID entry
+	   */
+	  char_id = scm_from_int (pg);
+	}
+      else
+	char_id = scm_makfrom0str (glyph_name);
       *tail = scm_cons (scm_list_3 (scm_from_double (ggeo.x_offset * scale_ + dx),
 				    scm_from_double (ggeo.y_offset * scale_),
-				    scm_makfrom0str (glyph_name)),
+				    char_id),
 			SCM_EOL);
       dx = 0.0;
       tail = SCM_CDRLOC (*tail);
diff --git a/scm/output-ps.scm b/scm/output-ps.scm
index 7d5ed56e9a..aa6581adf4 100644
--- a/scm/output-ps.scm
+++ b/scm/output-ps.scm
@@ -190,8 +190,10 @@
 	    (if (and (= 0.0 x)
 		     (= 0.0 y))
 		(format #f " /~a glyphshow\n" g)
-		(format #f " ~a ~a rmoveto /~a glyphshow\n"
-			x y g))))
+		(format #f " ~a ~a rmoveto ~a~a glyphshow\n"
+			x y
+			(if  (string? g) "/" "")
+			g))))
 	x-y-named-glyphs))))
 
 (define (grob-cause offset grob)
-- 
2.39.5