Как получить случайный символ Юникода в задаче C - PullRequest
2 голосов
/ 12 мая 2011

Мне было интересно, как получить случайный символ Юникода, чтобы каждый раз, когда он запускался, он генерировал другое значение. Вот что у меня есть, чтобы получить персонажа:

    NSFont *arialUnicode = [[NSFontManager sharedFontManager] 
    fontWithFamily:@"Arial Unicode MS"
    traits:0 
    weight:5 
    size:dirtyRect.size.height*0.6];

    NSGlyph *glyphs = (NSGlyph *)malloc(sizeof(NSGlyph) * 1); 

    CTFontGetGlyphsForCharacters((CTFontRef)arialUnicode, (const UniChar *)L"\u2668", (CGGlyph *)glyphs, 1);

Это адаптировано из учебника рисования, который прислал мне мой друг: http://cocoawithlove.com/2011/01/advanced-drawing-using-appkit.html

Довольно хороший учебник на самом деле:)

Но я хочу знать, как использовать любой символ, а не просто цветочное сердце. Я обнаружил, что покупка изменяет значение 2668 на другое значение в строке:

CTFontGetGlyphsForCharacters((CTFontRef)arialUnicode, (const UniChar *)L"\u2668", (CGGlyph *)glyphs, 1);

Я могу изменить его характер, но я хочу автоматизировать его, чтобы он автоматически выбирал других символов.

Спасибо

1 Ответ

1 голос
/ 13 мая 2011

Если вы действительно хотите случайный символ, что-то вроде

UniChar uc = arc4random() % (0xffffu + 1);        
CTFontGetGlyphsForCharacters((CTFontRef)arialUnicode, &uc, (CGGlyph *)glyphs, 1);

Но в зависимости от того, что вы пытаетесь сделать

  • Есть намного более простые способы отображения текста в Какао, особенно NSTextField
  • В Юникоде так много символов, что маловероятно, что один шрифт будет содержать все глифы.

Вы действительно хотите указать случайный код Unicode или хотите выбрать из подмножества доступных символов? См. http://www.unicode.org/charts/, чтобы получить представление о том, сколько Unicode покрывает.

...