817 Q_ASSERT(freetype); |
817 Q_ASSERT(freetype); |
818 freetype->lock(); |
818 freetype->lock(); |
819 FT_Face face = freetype->face; |
819 FT_Face face = freetype->face; |
820 |
820 |
821 // ### not perfect |
821 // ### not perfect |
822 const int ysize = fontDef.pixelSize << 6; |
822 const int ysize = qRound(fontDef.pixelSize * qreal(64)); |
823 const int xsize = ysize; |
823 const int xsize = ysize; |
824 |
824 |
825 if (freetype->xsize != xsize || freetype->ysize != ysize) { |
825 if (freetype->xsize != xsize || freetype->ysize != ysize) { |
826 FT_Set_Char_Size(face, xsize, ysize, 0, 0); |
826 FT_Set_Char_Size(face, xsize, ysize, 0, 0); |
827 freetype->xsize = xsize; |
827 freetype->xsize = xsize; |
936 g.x = qRound(metrics.x); |
936 g.x = qRound(metrics.x); |
937 g.y = qRound(metrics.y); |
937 g.y = qRound(metrics.y); |
938 g.advance = qRound(metrics.xoff); |
938 g.advance = qRound(metrics.xoff); |
939 |
939 |
940 QT_WRITE(fd, &g, sizeof(g)); |
940 QT_WRITE(fd, &g, sizeof(g)); |
941 QT_WRITE(fd, img.bits(), img.numBytes()); |
941 QT_WRITE(fd, img.bits(), img.byteCount()); |
942 |
942 |
943 glyphPos = oldSize - glyphDataOffset; |
943 glyphPos = oldSize - glyphDataOffset; |
944 #if 0 && defined(DEBUG_FONTENGINE) |
944 #if 0 && defined(DEBUG_FONTENGINE) |
945 qDebug() << "glyphPos for new glyph" << glyph << "is" << glyphPos << "oldSize" << oldSize << "glyphDataOffset" << glyphDataOffset; |
945 qDebug() << "glyphPos for new glyph" << glyph << "is" << glyphPos << "oldSize" << oldSize << "glyphDataOffset" << glyphDataOffset; |
946 #endif |
946 #endif |
947 |
947 |
948 quint32 *gmap = (quint32 *)(fontData + glyphMapOffset); |
948 quint32 *gmap = (quint32 *)(fontData + glyphMapOffset); |
949 gmap[glyph] = qToBigEndian(glyphPos); |
949 gmap[glyph] = qToBigEndian(glyphPos); |
950 |
950 |
951 glyphDataSize = glyphPos + sizeof(g) + img.numBytes(); |
951 glyphDataSize = glyphPos + sizeof(g) + img.byteCount(); |
952 quint32 *blockSizePtr = (quint32 *)(fontData + glyphDataOffset - 4); |
952 quint32 *blockSizePtr = (quint32 *)(fontData + glyphDataOffset - 4); |
953 *blockSizePtr = qToBigEndian(glyphDataSize); |
953 *blockSizePtr = qToBigEndian(glyphDataSize); |
954 } |
954 } |
955 |
955 |
956 bool QFontEngineQPF::lockFile() |
956 bool QFontEngineQPF::lockFile() |