无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: 2011895866818
打印 上一主题 下一主题

[原创] [2012.09.15][GRUB即GRLDR启动菜单字体制作工具]

    [复制链接]
1#
发表于 2012-9-11 16:03:04 | 显示全部楼层

回复 #71 2011895866818 的帖子

轉換時好像沒有根據 BBX 語句調整實際位置?

例如:
  1. FONTBOUNDINGBOX 16 16 0 -2

  2. STARTCHAR 005E
  3. ENCODING 94
  4. SWIDTH 500 0
  5. DWIDTH 8 0
  6. BBX 5 3 1 -2
  7. BITMAP
  8. 20
  9. 50
  10. 88
  11. ENDCHAR
复制代码


但是畫出來卻變成:
  1. 005E:   --------
  2.         --------
  3.         --------
  4.         --------
  5.         --------
  6.         --------
  7.         --------
  8.         --------
  9.         --------
  10.         --------
  11.         --------
  12.         --------
  13.         --------
  14.         ---#----
  15.         --#-#---
  16.         -#---#--
复制代码

而沒有把它往上搬

  1. STARTCHAR 0061
  2. ENCODING 97
  3. SWIDTH 500 0
  4. DWIDTH 8 0
  5. BBX 7 8 0 4
  6. BITMAP
  7. 78
  8. 84
  9. 04
  10. 3C
  11. 44
  12. 84
  13. 8C
  14. 76
  15. ENDCHAR
复制代码


則沒有往下搬:
  1. 0061:   --------
  2.         --------
  3.         -####---
  4.         #----#--
  5.         -----#--
  6.         --####--
  7.         -#---#--
  8.         #----#--
  9.         #---##--
  10.         -###-##-
  11.         --------
  12.         --------
  13.         --------
  14.         --------
  15.         --------
  16.         --------
复制代码

[ 本帖最后由 roytam1 于 2012-9-12 10:38 编辑 ]
回复

使用道具 举报

2#
发表于 2012-9-12 10:40:27 | 显示全部楼层
再編譯 otf2bdf
修正了 BBX 判定問題
請多測試

(更新:修正 units per em = 0 時出現除零錯誤的問題)

[ 本帖最后由 roytam1 于 2012-9-12 11:44 编辑 ]

otf2bdf.7z

203.76 KB, 下载次数: 42, 下载积分: 无忧币 -2

otf2bdf.c.7z

11.42 KB, 下载次数: 38, 下载积分: 无忧币 -2

回复

使用道具 举报

3#
发表于 2012-9-12 11:45:35 | 显示全部楼层
更新 80樓的 otf2bdf

另上傳 NEC98 + Zpix的 hex.gz


[ 本帖最后由 roytam1 于 2012-9-12 16:06 编辑 ]

NEC98.part1.rar

399.9 KB, 下载次数: 40, 下载积分: 无忧币 -2

NEC98.part2.rar

94.8 KB, 下载次数: 40, 下载积分: 无忧币 -2

回复

使用道具 举报

4#
发表于 2012-9-12 15:34:04 | 显示全部楼层
修改了一下代碼:
- 跳過 ENCODING -1 的字
- 假定沒有 DWIDTH 語句的字為 16px (fontforge 輸出的 BDF 可能沒有 DWIDTH )
- 設定 STDIN 和 STDOUT 為二進模式,免除自行 dos2unix
- 重新加回 0000-00A3 的處理 (不需要的可自行開啟 .hex 檔案刪除)
- 直接使用系統的 perl.exe,不再依賴關連執行
- Big5繁體化,有需要的請自行轉碼簡體化

[ 本帖最后由 roytam1 于 2012-9-12 16:40 编辑 ]

ttf2unifont-hex_Perl.7z

210.89 KB, 下载次数: 117, 下载积分: 无忧币 -2

回复

使用道具 举报

5#
发表于 2012-9-12 16:19:39 | 显示全部楼层
原帖由 sratlf 于 2012-9-12 16:12 发表
能否传到其他网盘上  联通的网络  下载附件一直失败

百毒的可以不?
http://pan.baidu.com/share/link?shareid=30142&uk=1124271254
回复

使用道具 举报

6#
发表于 2012-9-12 20:57:52 | 显示全部楼层
再改一下:
- 修正 bat 中餘下的關連執行
- 更新 otf2bdf(ttf2bdf.exe) 新增 -a(強制使用Freetype Autohinter) -A(關閉Freetype Autohinter) -g n(設定Freetype Autohinter算法:0=NORMAL,1=LIGHT,2=MONO,3=LCD,4=LCD_V)

ttf2unifont-hex_Perl.rar

245.79 KB, 下载次数: 43, 下载积分: 无忧币 -2

回复

使用道具 举报

7#
发表于 2012-9-12 20:58:52 | 显示全部楼层
原帖由 2011895866818 于 2012-9-12 20:57 发表


看了一下源码,表示很晕.
你看能不能做一个直接输出成unifont字库的程序.
不经过中间步骤.实现应该更简单吧.

還是分開比較容易維護。
回复

使用道具 举报

8#
发表于 2012-9-13 00:47:54 | 显示全部楼层

不用安裝perl了!

不用安裝perl了!
現在包含300多KB的microperl

另附上 perl-5.16.1 microperl win32可編譯的補丁。
(更新:優化一下microperl的大小)

[ 本帖最后由 roytam1 于 2012-9-13 10:57 编辑 ]

ttf2unifont-hex_Perl.part1.rar

399.95 KB, 下载次数: 72, 下载积分: 无忧币 -2

ttf2unifont-hex_Perl.part2.rar

169 KB, 下载次数: 64, 下载积分: 无忧币 -2

perl-5.16.1-microperlw32.patch.7z

5.34 KB, 下载次数: 37, 下载积分: 无忧币 -2

回复

使用道具 举报

9#
发表于 2012-9-13 22:11:19 | 显示全部楼层
改用VC6編的miniperl,更小了。
freetype和otf2bdf也改用VC6編了。

[ 本帖最后由 roytam1 于 2012-9-13 22:21 编辑 ]

ttf2unifont-hex_Perl.part1.rar

399.95 KB, 下载次数: 41, 下载积分: 无忧币 -2

ttf2unifont-hex_Perl.part2.rar

102.25 KB, 下载次数: 45, 下载积分: 无忧币 -2

回复

使用道具 举报

10#
发表于 2012-9-15 14:19:40 | 显示全部楼层
原帖由 2012del111 于 2012-9-15 11:46 发表
bdf2hex需要vc++2010的支持才行。

102樓的包 可免安裝。
回复

使用道具 举报

11#
发表于 2012-9-15 22:21:02 | 显示全部楼层

回复 #107 2011895866818 的帖子

話說用哪版的 perlcc 編的?
回复

使用道具 举报

12#
发表于 2012-9-15 23:03:55 | 显示全部楼层
原帖由 2011895866818 于 2012-9-15 22:30 发表


我用的c++

那麼有源碼嗎?
回复

使用道具 举报

13#
发表于 2012-9-16 09:56:40 | 显示全部楼层
原帖由 2011czmxbb52 于 2012-9-16 09:17 发表

我用VS2005编译,老是通不过,报错:
怎么回事?谢谢指教!

VC6加上三條#define可編譯。
  1. #define _itoa_s _itoa
  2. #define strcat_s strcat
  3. #define strcpy_s strcpy
复制代码
回复

使用道具 举报

14#
发表于 2012-9-16 10:15:19 | 显示全部楼层
原帖由 2011czmxbb52 于 2012-9-16 09:17 发表

我用VS2005编译,老是通不过,报错:
怎么回事?谢谢指教!

問題是 iostream 不能用「=」來複製﹐改用 .open 即可。

  1. @@ -106,11 +110,11 @@
  2.                 cerr<<"没有文件参数\n";
  3.                 return 1;
  4.         }
  5.         if(infile!=NULL)
  6.         {
  7. -                fin=fstream(infile,ios::in);
  8. +                fin.open(infile,ios::in);
  9.                 if(!fin)
  10.                 {
  11.                         cerr<<"输入文件打开失败: "<<infile<<endl;
  12.                         return 1;
  13.                 }
  14. @@ -155,11 +159,11 @@
  15.         //
  16.         //
  17.         ofstream fout;
  18.         if(outfile!=NULL)
  19.         {
  20. -                fout=ofstream(outfile,ios::binary);
  21. +                fout.open(outfile,ios::binary);
  22.                 if(!fout)
  23.                 {
  24.                         cerr<<"输出文件打开失败: "<<outfile<<endl;
  25.                         return 1;
  26.                 }
复制代码
回复

使用道具 举报

15#
发表于 2012-9-16 19:07:01 | 显示全部楼层
原帖由 2011czmxbb52 于 2012-9-16 18:57 发表

还有这句:
cerr

不用,fstream的<<符號(operator)會輸出檔名。
回复

使用道具 举报

16#
发表于 2012-9-17 15:40:40 | 显示全部楼层
原帖由 2011czmxbb52 于 2012-9-17 14:47 发表
就原来代码没变,加了个资源:两个对话框,一个版本信息表结果一堆错,输出(VS2005,按默认配置):
1>------ 已启动生成: 项目: bdf2hex, 配置: Release Win32 ------
1>正在编译...
1>ViewForm.cpp
1>d: ...

給你diff
  1. diff -U8 -r bdf2hex/bdf2hex/FormGui.h bdf2hex_/bdf2hex/FormGui.h
  2. --- bdf2hex/bdf2hex/FormGui.h        2012-09-17 14:27:38.218750000 +0800
  3. +++ bdf2hex_/bdf2hex/FormGui.h        2012-09-17 15:25:30.795750000 +0800
  4. @@ -1,10 +1,12 @@
  5. #pragma once

  6. +#include <afxdisp.h>
  7. +#include "stdafx.h"

  8. // FormGui 对话框

  9. class FormGui : public CDialog
  10. {
  11.         DECLARE_DYNAMIC(FormGui)

  12. public:
  13. diff -U8 -r bdf2hex/bdf2hex/ViewForm.h bdf2hex_/bdf2hex/ViewForm.h
  14. --- bdf2hex/bdf2hex/ViewForm.h        2012-09-17 14:31:19.125000000 +0800
  15. +++ bdf2hex_/bdf2hex/ViewForm.h        2012-09-17 15:26:27.655125000 +0800
  16. @@ -1,10 +1,12 @@
  17. #pragma once

  18. +#include "stdafx.h"
  19. +#include <afxdisp.h>

  20. // ViewForm 对话框

  21. class ViewForm : public CDialog
  22. {
  23.         DECLARE_DYNAMIC(ViewForm)

  24. public:
  25. diff -U8 -r bdf2hex/bdf2hex/bdf2hex.cpp bdf2hex_/bdf2hex/bdf2hex.cpp
  26. --- bdf2hex/bdf2hex/bdf2hex.cpp        2012-09-17 14:47:25.312500000 +0800
  27. +++ bdf2hex_/bdf2hex/bdf2hex.cpp        2012-09-17 15:28:28.108250000 +0800
  28. @@ -1,40 +1,40 @@
  29. // bdf2hex.cpp : 定义控制台应用程序的入口点。
  30. //

  31. #include "stdafx.h"
  32. -#include "FormGui.cpp"
  33. #include "FOrmGui.h"
  34. using namespace std;
  35. void usage();
  36. void a2A(char *);


  37. int main(int argc,char *argv[])
  38. {
  39.         char *infile=NULL,*outfile=NULL;
  40.         int letterskip=1,preview=0,moveleft=0,moveup=0;
  41. +        FormGui FormGui;
  42.         if(argc==1)
  43.         {
  44.                 usage();
  45.                 return 1;
  46.         }
  47.         argc--;
  48.         argv++;
  49.         while(argc>0)
  50.         {
  51.                 if(argv[0][0]=='-')
  52.                 {
  53.                         switch(argv[0][1])
  54.                         {
  55.                         case 'g':
  56.                         case 'G':
  57. -                                FormGui->Create(IDD_DIALOG1,NULL);
  58. -                                FormGui->ShowWindow(SW_SHOW);
  59. +                                FormGui.Create(IDD_DIALOG1,NULL);
  60. +                                FormGui.ShowWindow(SW_SHOW);
  61.                         case 's':
  62.                         case 'S':
  63.                                 argc--;argv++;
  64.                                 letterskip=0;
  65.                                 break;
  66.                         case 'p':
  67.                         case 'P':
  68.                                 argc--;argv++;
  69. diff -U8 -r bdf2hex/bdf2hex/stdafx.h bdf2hex_/bdf2hex/stdafx.h
  70. --- bdf2hex/bdf2hex/stdafx.h        2012-09-17 11:58:10.046875000 +0800
  71. +++ bdf2hex_/bdf2hex/stdafx.h        2012-09-17 15:25:21.748875000 +0800
  72. @@ -14,11 +14,14 @@

  73. // TODO: 在此处引用程序需要的其他头文件
  74. #include <iostream>
  75. #include <fstream>
  76. #include <string>
  77. #include <iomanip>
  78. #include <afxwin.h>
  79. #include <windows.h>
  80. +
  81. +#include "resource.h"
  82. +
  83. //#define _itoa_s _itoa
  84. //#define strcat_s strcat
  85. //#define strcpy_s strcpy
  86. \ No newline at end of file
复制代码
回复

使用道具 举报

17#
发表于 2012-9-20 21:29:43 | 显示全部楼层
原帖由 2011czmxbb52 于 2012-9-20 16:45 发表
好了,GUI快完工了!
现在剩下的唯一问题是如何向main向命令行中条用一样的传递参数?
更烦的是跟文字框关联的变量是CString类型的不是别的容易操作的类型,怎么办?谢谢!(更重要的是还不定长!)
怎么办? ...

就從 CString 輸出 const char * 即可。
http://msdn.microsoft.com/zh-tw/ ... 9%28v=vs.80%29.aspx
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-7 00:39

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表