-
- switch (text[i])
- {
- case '\\':
- // accent marks use width of base letter
- if (i +1 < text.length ())
- {
- if (text[i+1]=='\'' || text[i+1]=='`' || text[i+1]=='"' ||
- text[i+1]=='^')
- {
- i++;
- break;
- }
- // for string width \\ is a \ and \_ is a _.
- if (text[i+1]=='\\' || text[i+1]=='_')
- {
- break;
- }
- }
-
- for (i++; (i < text.length ()) && !isspace (text[i])
- && text[i]!='{' && text[i]!='}'; i++)
- ;
- // ugh.
- i--; // Compensate for the increment in the outer loop!
- break;
- case '{': // Skip '{' and '}'
- case '}':
- break;
-
- default:
- Box b = get_ascii_char ((unsigned char)text[i]);
-
- // Ugh, use the width of 'x' for unknown characters
- if (b[X_AXIS].length () == 0)
- b = get_ascii_char ((unsigned char)'x');
-
- w += b[X_AXIS].length ();
- ydims.unite (b[Y_AXIS]);
- break;
- }
+ expr = scm_list_3 (ly_symbol2scm ("named-glyph"),
+ self_scm (),
+ scm_makfrom0str (s.to_str0 ())
+ );
+ b = get_indexed_char (idx);