2015-08-28 51 views
0

我一直在使用字形,我知道要使某些字體粗體,您必須加載該字體的粗體版本。但是我想實現的是使用自由類型製作粗體字體。我已經使用FT_TRANSFORM實現了斜體樣式,現在我想讓它變得粗體。 任何想法?可能嗎? 我已閱讀FreeType API參考指南,但無法找到運氣! Regards如何使用freetype庫使字體粗體?

回答

1

要模擬粗體,可以使用一個px偏移量打印兩次相同的字形。 我不認爲你會得到完美的結果,但至少有一些東西。

+0

你能指導我該怎麼做嗎? –

+0

你到底需要什麼指導?如何使用FreeType呈現字形或什麼? –

+0

使用自由類型呈現字形以獲得粗體字符 –

0

我之前寫過這個。在這裏,我添加了第二個打印的行,以使字母加粗,如提到的@ c-smile。我不推薦這樣的技巧。如果有一個標準的方式,那就更好了。

void DrawFTGlyph(FT_Bitmap* pBitmap, int x, int y) 
{ 
    int i, j, p, q; 
    int xMax = x + pBitmap->width; 
    int yMax = y + pBitmap->rows; 
    D3DXCOLOR color = D3DCOLOR_RGBA(255, 255, 255, 1); 

    for (i = x, p = 0; i < xMax; i++, p++) 
    { 
     for (j = y, q = 0; j < yMax; j++, q++) 
     { 
      if (i < 0 || j < 0 || 
       i >= texture.Size().Width() || 
       j >= texture.Size().Height()) 
      { 
       continue; 
      } 

      BYTE intensity = pBitmap->buffer[q * pBitmap->pitch + p]; 
      D3DXCOLOR pixel(color.r * intensity, color.g * intensity, color.b * intensity, color.a * intensity); 

      texture.SetPixel(i, j, pixel); 
      texture.SetPixel(i + 2, j + 2, pixel); // Second print 
     } 
    } 
} 
相關問題