2011-05-12 43 views
2

我想知道如何獲得隨機Unicode字符,以便每次運行時都會生成不同的值。這是我迄今爲止得到的字符:http://cocoawithlove.com/2011/01/advanced-drawing-using-appkit.html如何獲得目標中的隨機Unicode字符C

相當不錯的教程其實:)

但我想:

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); 

它是從一個繪製教程我的朋友給我發了適應知道如何使用任何角色而不僅僅是花心。我發現,團購改變2668的值在該行的其他值:

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

我可以把它改變性格,但我想,這樣它會自動選擇不同的字符自動執行此。

謝謝

回答

1

如果你真的想要一個隨機字符,像

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

但在你正在嘗試做

  • 有更容易的方式來顯示文本依據在可可中,特別是NSTextField
  • 在Unicode中有很多字符,這是非常不可能的,單個字體將包含al l字形。

你真的想要一個隨機的unicode代碼點還是你想從可用字符的子集中選擇?請參閱http://www.unicode.org/charts/以瞭解Unicode涵蓋了多少。

+0

除了您所述的問題之外,並非所有這些值都將成爲有效的代碼點(例如,參見替代範圍)或分配的代碼點。其中一些將成爲控制字符或[diacritics](http://en.wikipedia.org/wiki/Diacritic)。 [UnicodeData.txt](http://unicode.org/Public/UNIDATA/UnicodeData.txt)定義最新分配的代碼點及其分類。對於OS /框架支持的任何Unicode版本,都有文檔的版本。 – McDowell 2011-05-13 12:38:18

+0

@McDowell非常真實 - 我把它當作「如何生成隨機UniChar」的問題。我想只有OP知道他們正在努力完成什麼,但選擇一個隨機代碼點可能不會給出最好的結果。 – sbooth 2011-05-13 12:50:59

+0

哇,非常感謝。這真是太好了。那正是我想要的。我將使第一行適應一定範圍內的unicode字符,然後調整繪圖教程中的代碼以隨機更改顏色。然後我會有一個隨機圖標生成器。爲此非常感謝。真的很有幫助 – Tawfiqh 2011-05-14 08:37:45