阅读上一个主题 :: 阅读下一个主题 |
作者 |
[原创]介绍一下我的音托四分码 |
 |
吴耐 [个人文集]
加入时间: 2004/03/06 文章: 1164
经验值: 54086
|
|
|
作者:吴耐 在 驴鸣镇 发贴, 来自 http://www.hjclub.org
1. 简介
用户:这款输入法设计初衷是面向所有用户,即可以用于“看打”,也可以用于“想打”,但是要求用户对拼音有一定的了解。也就是面向对于拼音有所了解但是对于“屏选”比较反感的用户。用户即可以是专业打字员,也可以是普通用户。这样的用户对于输入速度有一定的需求,对于“盯屏选字”特别不喜欢,并且也不愿意花费大量的时间用于输入法的学习。
特性: 单字码长固定为四码。双字词固定码长为4码。三字词固定码长为6码。多字词固定码长为4码。编码方法是“以声托形”的形声码。不可拆分的基本部件(或者叫做“字根”)只有47个。汉字拆分规则很简单,就是在某个帖子里某位网友所说的“剁鱼”的办法:一刀下去先把每个汉字切分成两半;然后再两刀下去把两半切分成四份;然后取切分出来的每个部件的首音组成四码。有没有无法下刀的情况?有。无法下刀怎么办?好办,直接取首音加首韵就结了。
真正独特之处:1)汉字四分;2)无音部件取其“母字”的发音。
2. 概念,术语和定义
首先我需要引入一些术语和定义,然后在此基础上介绍我的编码规则。
2.1. 部件
在我的这篇文章中,不同于我的“音托全息码”中的定义,部件是一个广义的概念,可以是不可拆分的基础部件,也可以是能够拆分的非基础部件。部件包括了单笔画部件,常用偏旁部件,无音部件和所有汉字。
2.2. 部件的大小
我们需要在部件之间引入偏序关系。也就是说,我们可以给所有部件按照某种规则排出一种先后次序。排在前面的被叫做“小于”排在后面的。排在后面的被叫做“大于”排在前面的。有了这种关系,我们就可以比较任意两个部件的“大小”。规则如下:
1) 笔画数多的部件总是排在笔画数少的部件的后面。例如,“二”排在“一”的后面。或者说,“一”小于“二”,“二”大于“一”。再如,“牛”小于“生”,“辛”大于“立”,等等。
2) 笔画一样多的部件,每一笔都按照横竖撇点折的不同排出次序。也就是说,如果部件A第一笔画是横,部件B第一笔画是竖,部件C的第一笔画是撇,部件D的第一笔画是点,部件E的第一笔画是折,那么部件B排在部件A的后面,部件C排在部件B的后面,。。。如果第一笔画相同,那么就比较第二笔画,以此类推。例如,“干”小于“千”,因为“干“的第一笔是横,”千“的第一笔是撇,而横小于撇。再如,“二”小于“十”,因为“二”的第二笔是横,“十”的第二笔是竖,而横小于竖。 同理,“干”小于“土”,“刁”小于“刀”,等等。
3) 如果两个部件笔画完全相同,那么按照他们的汉语拼音排序。例如部件“工”小于部件“土”,因为“工”的汉语拼音是“gong”,“土”的汉语拼音是“tu”,而“g”排在“t”的前面。同理,“八”小于“人”,“人”小于“入”,等等。
4) 如果两个部件笔画完全相同,无音部件总是排在有音部件的前面。
2.3. 部件的自然结构
自然结构就是指的我们常说的上下结构,左右结构等等。由于汉字是二维文字,自然结构是汉字特有的一种属性。每个汉字都具有结构的属性。同时,当汉字拆分为部件之后,部件也仍然拥有结构属性,直到部件被拆分为单笔画。
自然结构包括上下,左右,内外,夹缠和交重。
上下结构又包含了上中下以及由更多部件组成的上下串行的结构。比如,“幕幂冪”可以看作是由四个以上部件组成的上下结构。
左右结构又包含了左中右以及由更多部件组成的左右串行的结构。比如,“湖做诳”。
内外结构包含了全包围,左上右下半包围,左下右上半包围,以及三面包围等等。例如,“围困”是全包围结构,“进退”是左下右上半包围结构,“或戎”是右上左下半包围结构,“厌屁”是左上右下半包围结构,“斗头”是右下左上半包围结构,“同区凶闪”是三面包围结构。
夹缠结构包含了全夹缠和半夹缠结构。全夹缠结构是说一个比较把另一个部件全部夹在中间。例如“班斑辩辨粥弼褒裹街衍嚣器”是全夹缠结构。半夹缠是说一个部件夹缠在另一个部件的部分笔画上。例如,“小米半末未耒夹平”是半夹缠结构。这种结构也被称作“缠绕”结构或者“围绕”结构。“字架”结构是其中的一个子集。
交重结构是指一个部件与另一个部件相互交叉或者重叠在一起。例如“七九十力串车册”是交重结构。如果规定“交重不拆”,那么这两个部件组成的汉字被叫做“独体字”。但是在我的这个方案里,交重是可拆的,所以引入了“交重结构”的概念来描述这种情况。
当把一个部件拆分为更小的子部件的时候,更小的子部件也拥有结构,我们把子部件的结构称为原部件的二级结构。也就是说结构是分级的。例如“接”是左右结构,把它拆分成“扌”和“妾”之后,“妾”是上下结构。
在我的方案里,没有杂合结构一说。杂合在我来说是把多级结构混杂在了一起。在我的方案里,多级结构混杂是不被允许的。例如,“接”只能说是左右结构,而不能说是左右与上下相互杂合的结构。
当然,有些汉字在不同人的眼里可能具有不同的结构。比如,“禾”可以被看作是由“丿”和“木”组成的上下结构,也可以被看作是由“千”和“八”组成的半夹缠结构。同理,“失”可以被看作是由“卧人”与“大”组成的交重结构,也可以被看作是由“丿”与“夫”组成的左上右下半包围结构。在我的方案里,这是被允许的。
3. 拆分规则
3.1. 部件拆分规则
“部件拆分”是指把一个部件拆分成更小的子部件的过程。原部件称为子部件的“母部件”。汉字是一种特殊部件,所以“部件拆分”也就包含了“汉字拆分”在里头。
在我的这个输入法方案中,一个部件只能拆分成两个子部件,不允许拆分成三个,四个或者多个子部件。所以这种拆分方法也叫做“二分法”。“二分法”必须遵循如下规则进行:
规则1(单笔画不拆):任何单笔画都不可被截断成为两个或者多个单笔画。例如,“我”不可拆分成“手戈”,“制”不可拆分成“牛巾刀”等等。
规则2(常用部件不拆):如下部件被看作是“字根”,不可进一步拆分:
如下20个成字以及他们对应的偏旁不可进一步拆分:
虫刀月火糸金口木女手犬人石土水鱼王心言竹
如下22个纯偏旁不可进一步拆分:
勹(包字框)
匚(区字框)
凵(凶字框)
冂(同字框)
囗(围字框)
艹(草字头)
夂(冬字头)
亠(京字头)
罒(罗字头)
屮(草字旁)
疒(病字旁)
冖(秃宝盖)
宀(宝盖)
卩(单耳)
阜(耳朵)
辶(走之)
廴(建之)
彡(三撇)
巛(三折)
攵(反文)
廾(弄字底)
冫(两点水)
(包括5框4头2旁2盖2耳2之2三1文1底1水)
合计总共42个不可拆分的字根。
规则3(结构不同级不拆):尽量按照部件的自然结构进行拆分。并且只允许按照同一级结构进行拆分,不可跨级拆分。例如,“敫”只能拆分为“白方”+“攵”,不能拆分为“白”+“放”。“颖”只能拆分为“匕禾”+“页”,不能拆分为“顷”+“禾”等等。如果部件的结构是纯上下(不包括上中下),纯左右(不包括左中右),内外(包括全包围和任何一种半包围)或者夹缠(包括全夹缠和半夹缠),拆分应该没有任何歧义。其他结构的拆分就可能有歧义了。如果拆分有歧义,或者一个部件可以看作多种不同的结构,那么一个部件就有多种拆分方法。对于这种情况,按照如下规则决定采用哪种拆分方法。
规则4(成字优先规则):如果一个部件有多种拆分方法,按照如下列表来决定优先级,采用优先级最高的那种拆分方法。
成字(包括偏旁字根)部件+成字(包括偏旁字根)部件
单笔画部件+成字(包括偏旁字根)部件
成字(包括偏旁字根)部件+单笔画部件
无音部件+成字(包括偏旁字根)部件
成字(包括偏旁字根)部件+无音部件
单笔画部件+单笔画部件
无音部件+单笔画部件
单笔画部件+无音部件
无音部件+无音部件
也就是说,如果一种拆分方法拆出来的两个子部件都是成字,另一种方法拆分出来的子部件一个是成字,一个是单笔画,那么采用都是成字的那种拆分方法。其他以此类推。例如,“朱”可以拆分成“牛八”,也可以拆分成“丿未”,采用“牛八”的拆分方法。“主”可以拆分成“亠”+“土”,也可以拆分成“丶”+“王”,采用“亠”+“土”的拆分方法。
以上列表中的每一种方法,我们称它为一种拆分“花式”或者“花样”。也就是说,“成字+成字”是一种拆分“花式”,“成字+单笔画”是另一种拆分“花式“。
规则5(前小后大规则):如果多种拆分方法的拆分花式相同,那么选取那种使得拆分出来的第二个部件最大的拆分方法。这种规则也可以叫做“避免头重脚轻根底浅”的规则。例如,“湖”可以拆分成“氵”+“胡”,也可以拆分成“沽”+“月”,我们选取第一种拆分方法。“章”可以拆分成“立”+“早”,也可以拆分成“音”+“十”,我们采用“立早”的拆分方法。
3.2. 汉字拆分规则
因为汉字也是部件,所以汉字的拆分完全遵照部件的“二分法”规则。只不过,对于任何汉字,都要进行两次“二分”,从而把一个汉字“四码分尸”。例如,“鼓”先“二分”成“壴”+“支”,再四分成“十”+“豆”+“十”+“又”。再如,“眶”先二分成“目”+“匡”,再四分成“口”+“二”+“ 匚”+“王”。对于不能进一步拆分的47个字根,不分就是了。例如,“林”=“木”+“木”,不可拆分成 “十”+“八”+ “十”+“八” 。“相”=“木”+“目”= “木”+ “口”+“二”,不可拆分成“十”+“八”+ “口”+“二”等等。
每一个汉字在拆分成最多四个部件之后,部件顺序的确定按照“首笔定序“规则进行。也就是说,部件的第一笔在原汉字中顺序在前的,部件的顺序就在前;部件的第一笔在原汉字中顺序在后的,部件的顺序就在后。
因此,总结一下,汉字的拆分规则可以归纳为两条:二二得四拆分规则和首笔定序规则。
汉字第一次拆分出来的部件又叫做“字半”。汉字第二次拆分出来的部件,是字半的一半,叫做“字季”。英语中,有一个专门的名词“Quarter”来称呼“四分之一”,但是汉语里没有对应的词汇。因为一年的四分之一叫做一“季”,我们把这个定义推广一下,把任何事物的四分之一都叫做一“季”,这样一个汉字的四分之一就叫做“字季”了。
一个部件,即有可能在一个汉字中做字半,也可能同时在另一个汉字中做字季,例如,“匕”在“旨”中做字半,在“能”中做字季。
3.3. 部件表达符号
因为许多部件并没有对应的国标字符或者国际字库(字符集合)字符,所以为了表达这些部件,我们运用一些符号。
符号“^”表示一个部件的上部。例如,“春^”表示“春”字的上部,也就是“春字头”。
符号“_”表示一个部件的下部。例如,“弄_”表示“弄”字的下部,也就是“弄字底”。
符号“-”表示从一个部件中去掉某些部件或笔画。例如“大-丶”表示从“大”字中去掉“捺”笔画得到的部件,也就是“友”字的上半部。因此“春字头”也可以表示为“春-日”,也就是从“春”字中把“日”字去掉得到的部件。
符号【】表示方括号内表达的是一个部件。例如,【木爻木】表示“樊”的上部,是由“木”,“爻”和“木”组合在一起组成的某个无音部件,而不是三个部件。
符号【】与符号“-”还可以结合起来使用。例如,【樊-大】仍然表示“樊”的上部。
有了这些表达方法,我们就可以比较容易的描述拆分出来的任何部件了。比如,汉字“春”可以拆分为“春-日”+“日”。省略掉加号和引号,用更加简洁的写法写成:
春 = 【春-日】日
这里用方括号括起来的部分代表了一个部件。这样方括号也被用来作为一个部件表达符号。再举些个例子来看看如何利用符号表达式来描述汉字的拆分:
泼 = 氵【发-又】又
表 = 【表-衣_】衣_ = 十二衣_
容 = 宀谷 = 宀【八人】口
易 = 日勿 = 口一勹【勿-勹】
张 = 弓长 = 【弓-折】折【长-点】点
能 = 【能-匕-匕】【能-厶-月】 = 厶月匕匕
4. 编码规则
4.1. 单字编码规则
在汉字被“四码分尸”拆分为最多4个部件之后,按照如下取码规则为每一个部件编码。然后按照部件的顺序把所有部件的编码串起来就得到了该汉字的编码。
规则1(字根取码规则):对于47个字根,取码规则如下:
单笔画部件只取一码,取其首音:
横(H)
竖(S)
撇(P)
点(D)
折(Z)
如下部件在做字半或者字季的时候只取一码,取其首音:
疒(B)
虫(C)
刀(D)
F
G
火(H)
金(J)
口(K)
L
木(M)
女(N)
P
犬(Q)
人(R)
石(S)
土(T)
王(W)
心(X)
言(Y)
竹(Z)
辶(Z)
其中4个字母F,G,L,P没有被用到。“Z”被用到了两次。
如下部件在做字半或者字季的时候只取一码,取其首韵:
艹(A)
月(E)
糸(I)
手(O)
水(U)
鱼(V)
注意:所有成字字根在做整字的时候,仍然是可拆的,只是在做字半或者字季的时候不可拆分。
如下部件在做字季时取一码,取其俗称的首音;在做字半时不可进一步拆分成字季,所以取两码,取其俗称的首音+首韵:
勹(包字框)Ba
夂(冬字头)Do
卩(单耳)Da
阜(耳朵)Er
攵(反文)Fa
宀(宝盖)Ga
廴(建之)Ji
亠(京字头)Ji
冫(两点水)Li
罒(罗字头)Lu
廾(弄字底)No
彡(三撇)Pi
匚(区字框)Qu
冂(同字框)To
冖(秃宝盖)Tu
囗(围字框)We
凵(凶字框)Xi
巛(三折)Ze
规则2:非字根有音部件在做字季时取其首音,在做字半或者整字时需要进一步拆分。例如“十”在做字季时编码是“S”,“串”在做字季时编码是“C”,“日”在做字季时编码是“R”,等等。这样一来,“能 = 厶月匕匕 = SEBB”,“整 = 束攵一止 = SFHZ”。由于非字根有音部件在做字半时需要进一步拆分,因此,“束”在“敕”中需要进一步拆分成:“敕 = 束攵 = 木口攵 = MKFA”。
规则3:无音部件在做字季时取其母字的首音,在做字半或者整字时需要进一步拆分。例如【春-日】取“春”的首音“C”,【奏-天】取“奏”的首音“Z”。这同时也说明,同一个无音部件,在不同的汉字中做子部件,其编码是不一样的。所以,“椿 = 木春 = 木【春-日】日 = MCR”,“凑 = 冫奏 = 冫【奏-天】天 = LiZT”。
规则4:有些汉字无法拆分成四个部件,也就无法得到“四码”。对于不足四码的,追加该汉字整字的首音;仍然不足四码的,追加该汉字整字的首韵。例如“林 = 木木 = MMLI”,“森 = 木木木 = MMMS”,“鑫 = 金金金 = JJJX”。另外,增加表达符号“&”来表示追加的码元。例如,“MM&LI”表示“&”符号之后的码元属于追加的码元。
4.2. 汉字编码举例
根据以上汉字拆分规则和编码规则,我们可以很容易的得到如下典型汉字的编码:
礴 = 石薄 = 石艹溥 = SAP&B
薄 = 艹 溥 = 艹氵【溥-氵】 = AUP&B
溥 = 氵【溥-氵】 = 氵甫寸 = UFC&P
甫 = 【甫-月】月 = 十月丶 = SED&F
滢 = 氵莹 = 氵【莹-玉】玉 = UYY&Y
莹 = 【莹-玉】玉 = 艹冖王丶 = ATWD
京 = 【京-小】小 =亠口丨八 = JKSB
亮 = 【京-小】冗 = 亠口冖几 = JKTJ
高 = 亠【高-亠】 = 亠口【高-亠-口】 = JKG&G
攀 = 樊手 = 【樊-大】大手 = FDO&P
樊 = 【樊-大】大 = 林爻大 = LYD&F
框 = 木匡 = 木匚王 = MQW&K
眶 = 目匡 = 口二匚王 = KEQW
桦 = 木华 = 木化十 = MHS&H
骅 = 马华 = 【马-一】一化十 = MHHS
华 = 化十 = 亻匕一丨 = RBHS (或者华 = 化十 = 亻七一丨 = RQHS)
化 = 亻匕 = 亻乙丿 = RZP&H (或者化 = 亻七 = 亻一乙 = RHZ&H)
匕 = 乙丿 = ZP&BI
七 = 一乙 = HZ&QI
冤 = 冖兔 = 冖免丶 = TUMD
兔 = 免丶 = 刀【免-刀】丶 = DMD&T
免 =刀【免-刀】 = 刀口儿 = DKE&M
章 = 立早 =亠【八一】日十 = JLRS
张 = 弓长 = 【弓-乙】乙【长-丶】丶 = GZCD
刘 = 文刀 = 亠乂刀 = JYD&L (如果不认识“乂”, 取其母字“文”的首音,编码是JWD&L)
赵 = 走乂 = 十疋丿丶 = SPPD
钱 = 金戋 = 金戈丿 = JGP&Q
孙 = 子小 = 了一丨八 = LHSB
李 = 木子 = 木了一 = MLH&L
周 = 冂吉 =冂士口 = TOSK
吴 = 口天 = 口二人 = KER&W
郑 = 关【耳朵】 = 八天【耳朵】 = BTER
王 = 二十 = 一一丨一 = HHSH (字根在做整字时是可拆的)
八 = 丿丶 = PD&BA
人= 丿丶 = PD&RE
入= 丿丶 = PD&RU
儿 = 丿乙 = PZ&ER
几 =丿乙 = PZ&JI
九 =丿乙 = PZ&JI
刀 = 乙丿 = ZP&DA
力 =乙丿 = ZP&LI
乃 =乙丿 = ZP&NA
4.3. 词组编码规则
规则1(二字词规则):对于由两个汉字组成的二字词,将每一个汉字拆分成字半,取每个字半编码的第一码合在一起得到四码作为该词组的编码。例如“汉字 = 氵又宀子 = UYGZ”,“编码 = 糸扁石马 = IBSM”。
规则2(三字词规则):对于由三个汉字组成的三字词,将每一个汉字拆分成字半,取每个字半编码的第一码合在一起得到六码作为该词组的编码。例如“输入法 = 车俞丿丶氵去 = CYPDUQ”,“业务员 = 【业-八】八夂力口贝 = YBDLKB”。
规则3(多字词规则):对于由多于三个汉字组成的多字词,取前三末一合成四码。例如“中华人民共和国 = ZHRG”。
4.4. 字词分流
为了使得汉字的编码与词组的编码完全不重码,规定在输入二字词的第一个码元的时候,需要同时按下“SHIFT”键,在输入三字词的第二个码元的时候,需要同时按下“SHIFT”键,在输入多字词的第三个码元的时候,需要同时按下“SHIFT”键。例如,假设某个汉字的编码是“abcd”,某一个二字词的编码也是“abcd”,某一个三字词的编码是“abcdef”,某一个多字词的编码还是“abcd”,那么在输入汉字的时候,输入的码元就是“abcd”本身,在输入二字词的时候,输入的是“Abcd”,第一个码元字母“A”实际上是大写的;在输入三字词的时候,输入的是“aBcdef”,第二个码元字母“B”是大写的;在输入多字词的时候,输入的是“abCd”,第三个码元“C”是大写的。
我们当然也可以认为在输入词组的时候,实际上需要多输入一码,或者说多敲击一键。
4.5. 重码的处理
如果存在重码,用数字键选即可。比如,“岂屺”,“另叻”就是两组重码字。
5. 性能指标
5.1. 记忆量统计
“音托”的目的就是减少记忆量。显然我的音托四分码仍然比全拼输入法的记忆量要大。记忆量大概统计如下:
1) 用户需要记住47个字根及其编码。哪些汉字或者偏旁是字根,哪些不是,需要死记硬背。47个字根,包括22个纯偏旁字根的俗称,应该算是相当少了。再加上所有字根的编码要么取其首音,要么取其首韵,要么取首音+首韵,应该是比较容易记住的。
2) 用户需要记住5条部件拆分规则,2条汉字拆分规则,4条汉字编码规则,3条词组编码规则以及1条字词分流规则。
如此少的记忆量,除了全拼,还有那个输入法可以匹敌?应该算是达到了“易学”的指标了吧?
5.2. 编码码长统计
单字:汉字的平均静态码长是4码。如果再制定一套简码,静态码长应该在3.2码左右。当然动态码长会更短。
词组:因为大部分的词组是2字词,而2字词的静态码长是4码,所以词组的平均静态码长为每字2码。当然,实际的动态码长会更短。采用其他形码现成的技术,应该可以达到其他形码的指标。我还没有做简码和词库部分,所以还很难说。
5.3. 重码率
我原来的音托四分码方案规定“交重不拆”。对于不能拆分的部件,需要取部件本身的首音,首韵以及取其“长子”的首音和首韵来解决某些部件码元不足的问题。在那个方案里,我曾经做过粗略的统计,只有50几对重码字。
后来在我发表了我的“音托全息码”之后,许多网友认为取“长子”对于普通用户来说比较困难,所以我决定简化取长子的规则。再后来,谢大师提醒说,我可以用“细拆”来代替取“长子”,所以我就想如何才能“细拆”。在我思考这个如何“细拆“的过程中,突然想到,为什么一定要坚持“交重不拆”的原则呢?如果“交重可拆”,那么几乎所有汉字都可以被两次二分,也就是“四码分尸”。这样一来,不就解决了某些独体字无码可取的难题了吗?而且,如此一来,拆分规则更加简单,干净,统一了。对于“想打”来说,思维也会更加流畅一些,因为在拆分不下去的时候,不需要改变思路去取“长子”。
但是经过改动之后,我还没有来得及统计重码率。估计应该不会增加太多的重码字。
众所周知,音托码比较“死”,也就是说,一旦规则定下来了,每个汉字的编码也就定死了,不可调整了。因此,如果大家完全理解了我的这套音托四分码的所有规则,那么每个人都可以轻易地推导出所有汉字的编码。这既是优点,也是缺点。优点在于,不会有拆分歧义,非常容易上手。缺点在于,如果重码率很高,那么也就难以有什么好办法降下来。
尽管如此,我们还是可以通过微调拆分规则和编码规则,以及改变偏旁字根的俗称来做一定程度的调整,从而降低重码率。
如果这套方案的重码率能够低于五笔,那么我就可以说这套编码是成功的。低重码率加上4码长决定了这套方案是“好用”的,也就是说输入速度是“飞快”的,是匹“快”码。加上前述记忆量所解决的“易学”问题,可以说这套方案应该是做到了“易学好用”这一所有汉字输入法都在苦苦追求的理想境界了吧。
5.4. 用户需要具备的预备知识
实际上,要想完全掌握这套输入法,必要的预备知识是不可避免的。就像使用全拼的人需要知道每个汉字的拼音一样,我的这套音托码也需要用户知道几乎每个汉字的拼音。
而且,我的这套输入法需要用户知道更多的东西。比如,全拼输入,用户只需要知道“跟根”本身的发音就可以了。但是我的这套输入法还要求用户知道“艮”的发音。所以说,这套输入法要比全拼更难学一些。
另一方面,我的这套输入法在某些地方又比全拼需要知道的东西要少。比如,用户用全拼输入“靓”字,必须知道这个字的发音。而用我的这套音托码,只需要知道“青”和“见”的发音就可以输入“靓”字。
总起来说,我的这套音托码,需要用户知道某些做单字不常用,但是做部件却很常见的汉字,比如“艮隹豕”等等。这也是大部分音托码对用户的要求。
作者:吴耐 在 驴鸣镇 发贴, 来自 http://www.hjclub.org |
|
|
返回顶端 |
|
 |
|
|
|
您不能在本论坛发表新主题 您不能在本论坛回复主题 您不能在本论坛编辑自己的文章 您不能在本论坛删除自己的文章 您不能在本论坛发表投票 您不能在这个论坛添加附件 您可以在这个论坛下载文件
|
based on phpbb, All rights reserved.
|