亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? bidiline.java

?? iText可以制作中文PDF文件的JAVA源程序最新版下載
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
                char c = text[src];                if (c < 0x0600 || c > 0x06ff)                    break;                ++src;            }            int arabicWordSize = src - startArabicIdx;            int size = arabic.shape(text, startArabicIdx, arabicWordSize, text, dest, arabicWordSize);            if (startArabicIdx != dest) {                for (int k = 0; k < size; ++k) {                    detailChunks[dest] = detailChunks[startArabicIdx];                    orderLevels[dest++] = orderLevels[startArabicIdx++];                }            }            else                dest += size;        }    }           public PdfLine processLine(float width, int alignment, int runDirection) {        save();        if (currentChar >= totalTextLength) {            boolean hasText = getParagraph(runDirection);            if (!hasText)                return null;            if (totalTextLength == 0) {                ArrayList ar = new ArrayList();                PdfChunk ck = new PdfChunk("", detailChunks[0]);                ar.add(ck);                return new PdfLine(0, 0, alignment, true, ar, (runDirection == PdfWriter.RUN_DIRECTION_RTL));            }        }        float originalWidth = width;        int lastSplit = -1;        if (currentChar != 0)            currentChar = trimLeftEx(currentChar, totalTextLength - 1);        int oldCurrentChar = currentChar;        char c = 0;        PdfChunk ck = null;        float charWidth = 0;        PdfChunk lastValidChunk = null;        for (; currentChar < totalTextLength; ++currentChar) {            c = text[currentChar];            if (PdfChunk.noPrint(c))                continue;            ck = detailChunks[currentChar];            charWidth = ck.getCharWidth(c);            if (ck.isExtSplitCharacter(c))                lastSplit = currentChar;            if (width - charWidth < 0)                break;            width -= charWidth;            lastValidChunk = ck;        }        boolean isRTL = (runDirection == PdfWriter.RUN_DIRECTION_RTL);        if (lastValidChunk == null) {            // not even a single char fit; must output the first char            ++currentChar;            return new PdfLine(0, 0, alignment, false, createArrayOfPdfChunks(currentChar - 1, currentChar - 1), isRTL);        }        if (currentChar >= totalTextLength) {            // there was more line than text            return new PdfLine(0, width, alignment, true, createArrayOfPdfChunks(oldCurrentChar, totalTextLength - 1), isRTL);        }        int newCurrentChar = trimRightEx(oldCurrentChar, currentChar - 1);        if (newCurrentChar < oldCurrentChar) {            // only WS            return new PdfLine(0, width, alignment, false, createArrayOfPdfChunks(oldCurrentChar, currentChar - 1), isRTL);        }        if (lastSplit == -1 || lastSplit >= newCurrentChar) {            // no split point or split point ahead of end            return new PdfLine(0, width + getWidth(newCurrentChar + 1, currentChar - 1), alignment, false, createArrayOfPdfChunks(oldCurrentChar, newCurrentChar), isRTL);        }        // standard split        currentChar = lastSplit + 1;        newCurrentChar = trimRightEx(oldCurrentChar, lastSplit);        if (newCurrentChar < oldCurrentChar) {            // only WS again            newCurrentChar = currentChar - 1;        }        return new PdfLine(0, originalWidth - getWidth(oldCurrentChar, newCurrentChar), alignment, false, createArrayOfPdfChunks(oldCurrentChar, newCurrentChar), isRTL);    }        /** Gets the width of a range of characters.     * @param startIdx the first index to calculate     * @param lastIdx the last inclusive index to calculate     * @return the sum of all widths     */        public float getWidth(int startIdx, int lastIdx) {        char c = 0;        PdfChunk ck = null;        float width = 0;        for (; startIdx <= lastIdx; ++startIdx) {            c = text[startIdx];            if (PdfChunk.noPrint(c))                continue;            width += detailChunks[startIdx].getCharWidth(c);        }        return width;    }        public ArrayList createArrayOfPdfChunks(int startIdx, int endIdx) {        boolean bidi = (runDirection == PdfWriter.RUN_DIRECTION_LTR || runDirection == PdfWriter.RUN_DIRECTION_RTL);        if (bidi)            reorder(startIdx, endIdx);        ArrayList ar = new ArrayList();        PdfChunk refCk = detailChunks[startIdx];        PdfChunk ck = null;        StringBuffer buf = new StringBuffer();        char c;        int idx = 0;        for (; startIdx <= endIdx; ++startIdx) {            idx = bidi ? indexChars[startIdx] : startIdx;            c = text[idx];            if (PdfChunk.noPrint(c))                continue;            ck = detailChunks[idx];            if (ck.isImage()) {                if (buf.length() > 0) {                    ar.add(new PdfChunk(buf.toString(), refCk));                    buf = new StringBuffer();                }                ar.add(ck);            }            else if (ck == refCk) {                buf.append(c);            }            else {                if (buf.length() > 0) {                    ar.add(new PdfChunk(buf.toString(), refCk));                    buf = new StringBuffer();                }                if (!ck.isImage())                    buf.append(c);                refCk = ck;            }        }        if (buf.length() > 0) {            ar.add(new PdfChunk(buf.toString(), refCk));        }        return ar;    }        public int trimRight(int startIdx, int endIdx) {        int idx = endIdx;        for (; idx >= startIdx; --idx) {            if (!isWS(text[idx]))                break;        }        return idx;    }        public int trimLeft(int startIdx, int endIdx) {        int idx = startIdx;        for (; idx <= endIdx; ++idx) {            if (!isWS(text[idx]))                break;        }        return idx;    }        public int trimRightEx(int startIdx, int endIdx) {        int idx = endIdx;        char c = 0;        for (; idx >= startIdx; --idx) {            c = text[idx];            if (!isWS(c) && !PdfChunk.noPrint(c))                break;        }        return idx;    }        public int trimLeftEx(int startIdx, int endIdx) {        int idx = startIdx;        char c = 0;        for (; idx <= endIdx; ++idx) {            c = text[idx];            if (!isWS(c) && !PdfChunk.noPrint(c))                break;        }        return idx;    }        public void reorder(int start, int end) {        byte maxLevel = orderLevels[start];        byte minLevel = maxLevel;        byte onlyOddLevels = maxLevel;        byte onlyEvenLevels = maxLevel;        for (int k = start + 1; k <= end; ++k) {            byte b = orderLevels[k];            if (b > maxLevel)                maxLevel = b;            else if (b < minLevel)                minLevel = b;            onlyOddLevels &= b;            onlyEvenLevels |= b;        }        if ((onlyEvenLevels & 1) == 0) // nothing to do            return;        if ((onlyOddLevels & 1) == 1) { // single inversion            flip(start, end + 1);            return;        }        minLevel |= 1;        for (; maxLevel >= minLevel; --maxLevel) {            int pstart = start;            for (;;) {                for (;pstart <= end; ++pstart) {                    if (orderLevels[pstart] >= maxLevel)                        break;                }                if (pstart > end)                    break;                int pend = pstart + 1;                for (; pend <= end; ++pend) {                    if (orderLevels[pend] < maxLevel)                        break;                }                flip(pstart, pend);                pstart = pend + 1;            }        }    }        public void flip(int start, int end) {        int mid = (start + end) / 2;        --end;        for (; start < mid; ++start, --end) {            int temp = indexChars[start];            indexChars[start] = indexChars[end];            indexChars[end] = temp;        }    }        public static boolean isWS(char c) {        return (c <= ' ');    }    static {        mirrorChars.put(0x0028, 0x0029); // LEFT PARENTHESIS        mirrorChars.put(0x0029, 0x0028); // RIGHT PARENTHESIS        mirrorChars.put(0x003C, 0x003E); // LESS-THAN SIGN        mirrorChars.put(0x003E, 0x003C); // GREATER-THAN SIGN        mirrorChars.put(0x005B, 0x005D); // LEFT SQUARE BRACKET        mirrorChars.put(0x005D, 0x005B); // RIGHT SQUARE BRACKET        mirrorChars.put(0x007B, 0x007D); // LEFT CURLY BRACKET        mirrorChars.put(0x007D, 0x007B); // RIGHT CURLY BRACKET        mirrorChars.put(0x00AB, 0x00BB); // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK        mirrorChars.put(0x00BB, 0x00AB); // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK        mirrorChars.put(0x2039, 0x203A); // SINGLE LEFT-POINTING ANGLE QUOTATION MARK        mirrorChars.put(0x203A, 0x2039); // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK        mirrorChars.put(0x2045, 0x2046); // LEFT SQUARE BRACKET WITH QUILL        mirrorChars.put(0x2046, 0x2045); // RIGHT SQUARE BRACKET WITH QUILL        mirrorChars.put(0x207D, 0x207E); // SUPERSCRIPT LEFT PARENTHESIS        mirrorChars.put(0x207E, 0x207D); // SUPERSCRIPT RIGHT PARENTHESIS        mirrorChars.put(0x208D, 0x208E); // SUBSCRIPT LEFT PARENTHESIS        mirrorChars.put(0x208E, 0x208D); // SUBSCRIPT RIGHT PARENTHESIS        mirrorChars.put(0x2208, 0x220B); // ELEMENT OF        mirrorChars.put(0x2209, 0x220C); // NOT AN ELEMENT OF        mirrorChars.put(0x220A, 0x220D); // SMALL ELEMENT OF        mirrorChars.put(0x220B, 0x2208); // CONTAINS AS MEMBER        mirrorChars.put(0x220C, 0x2209); // DOES NOT CONTAIN AS MEMBER        mirrorChars.put(0x220D, 0x220A); // SMALL CONTAINS AS MEMBER        mirrorChars.put(0x2215, 0x29F5); // DIVISION SLASH        mirrorChars.put(0x223C, 0x223D); // TILDE OPERATOR        mirrorChars.put(0x223D, 0x223C); // REVERSED TILDE        mirrorChars.put(0x2243, 0x22CD); // ASYMPTOTICALLY EQUAL TO        mirrorChars.put(0x2252, 0x2253); // APPROXIMATELY EQUAL TO OR THE IMAGE OF        mirrorChars.put(0x2253, 0x2252); // IMAGE OF OR APPROXIMATELY EQUAL TO        mirrorChars.put(0x2254, 0x2255); // COLON EQUALS        mirrorChars.put(0x2255, 0x2254); // EQUALS COLON        mirrorChars.put(0x2264, 0x2265); // LESS-THAN OR EQUAL TO        mirrorChars.put(0x2265, 0x2264); // GREATER-THAN OR EQUAL TO        mirrorChars.put(0x2266, 0x2267); // LESS-THAN OVER EQUAL TO        mirrorChars.put(0x2267, 0x2266); // GREATER-THAN OVER EQUAL TO        mirrorChars.put(0x2268, 0x2269); // [BEST FIT] LESS-THAN BUT NOT EQUAL TO        mirrorChars.put(0x2269, 0x2268); // [BEST FIT] GREATER-THAN BUT NOT EQUAL TO        mirrorChars.put(0x226A, 0x226B); // MUCH LESS-THAN        mirrorChars.put(0x226B, 0x226A); // MUCH GREATER-THAN        mirrorChars.put(0x226E, 0x226F); // [BEST FIT] NOT LESS-THAN        mirrorChars.put(0x226F, 0x226E); // [BEST FIT] NOT GREATER-THAN

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一二三区不卡| 国产一区二区看久久| 狠狠色丁香久久婷婷综合_中| eeuss鲁片一区二区三区| 日韩午夜av电影| 亚洲免费观看高清完整版在线观看 | 91精品综合久久久久久| 国产精品久久久久久久岛一牛影视 | 国产激情一区二区三区| 国产日韩av一区| 精品成人在线观看| 一区二区三区高清不卡| 风流少妇一区二区| 26uuu精品一区二区三区四区在线| 亚洲无线码一区二区三区| 91小视频免费观看| 国产女人18水真多18精品一级做| 久久精品国产网站| 制服丝袜激情欧洲亚洲| 亚洲二区在线观看| 欧美日韩一区二区三区高清| 国产精品久久99| 懂色av一区二区夜夜嗨| 久久精品一区四区| 国内外精品视频| 日韩一区二区高清| 日精品一区二区三区| 欧美日韩国产色站一区二区三区| 亚洲一区自拍偷拍| 色噜噜狠狠成人网p站| 亚洲男同1069视频| 色成人在线视频| 一区二区免费视频| 欧美日韩dvd在线观看| 午夜视频在线观看一区| 欧美日韩国产高清一区| 日韩中文字幕不卡| 精品久久久久香蕉网| 精品一区二区三区在线视频| 精品欧美乱码久久久久久1区2区| 国内精品在线播放| 国产人伦精品一区二区| 99久久免费视频.com| 一区二区三区小说| 欧美疯狂性受xxxxx喷水图片| 香蕉av福利精品导航| 91精品国产综合久久精品| 狠狠色伊人亚洲综合成人| 中文字幕免费一区| 91成人免费在线视频| 首页欧美精品中文字幕| 精品国产一区二区精华| 成人性色生活片免费看爆迷你毛片| 国产欧美日韩在线观看| 色婷婷国产精品久久包臀| 日韩一区精品字幕| 精品卡一卡二卡三卡四在线| 国产精品亚洲一区二区三区妖精| 日本一区二区三级电影在线观看 | 91搞黄在线观看| 另类中文字幕网| 国产精品久久久久久久第一福利 | 国产精品麻豆久久久| 国产精品主播直播| 日韩免费高清av| 成人高清免费观看| 亚洲aⅴ怡春院| 久久久噜噜噜久久人人看| 91极品视觉盛宴| 国内精品国产三级国产a久久| 亚洲四区在线观看| 欧美人与性动xxxx| 成人黄色电影在线| 蜜桃视频第一区免费观看| 国产精品国产三级国产a| 日韩欧美国产综合| 91精彩视频在线观看| 国产成人啪午夜精品网站男同| 一区二区三国产精华液| 日本一区二区三区在线观看| 欧美精品久久99| 99国产精品国产精品毛片| 久久激情五月激情| 一区二区三区精品| 国产午夜久久久久| 日韩美一区二区三区| 欧美色精品在线视频| www.亚洲国产| 国产一区二区三区| 全部av―极品视觉盛宴亚洲| 一区二区三区在线观看国产 | av资源站一区| 国产综合久久久久久鬼色| 日日摸夜夜添夜夜添国产精品 | 91激情五月电影| jlzzjlzz亚洲女人18| 另类小说视频一区二区| 亚洲aaa精品| 一区二区理论电影在线观看| 中文字幕一区三区| 国产精品久久久久一区| 久久久亚洲精品石原莉奈| 日韩精品自拍偷拍| 日韩一区二区三区电影在线观看 | 99国产精品视频免费观看| 国产成人aaa| 国产精一区二区三区| 国产呦萝稀缺另类资源| 国产一区福利在线| 极品瑜伽女神91| 亚洲天堂网中文字| 亚洲线精品一区二区三区八戒| 欧美极品美女视频| 久久久精品天堂| 国产亚洲制服色| 国产精品三级电影| 亚洲欧洲日产国产综合网| 中文字幕免费不卡在线| 中文字幕一区在线| 亚洲精品日韩一| 亚洲国产精品天堂| 午夜精品在线视频一区| 亚洲第一在线综合网站| 日韩激情一二三区| 久久精品国产澳门| 国产专区欧美精品| 成人精品电影在线观看| 波多野结衣一区二区三区| 91九色最新地址| 欧美一区二区三区的| 久久久久久久国产精品影院| 中文字幕国产一区| 亚洲一区二区三区四区五区中文 | 成人av网站在线观看| 99国产精品视频免费观看| 欧美性极品少妇| 日韩一二三区不卡| 国产午夜亚洲精品理论片色戒 | 夜色激情一区二区| 中文字幕一区二区三区av| 亚洲男人天堂av网| 视频一区二区中文字幕| 久久69国产一区二区蜜臀| 不卡的电影网站| 日本电影欧美片| 日韩欧美中文字幕一区| 中文字幕乱码久久午夜不卡| 亚洲国产你懂的| 国产一区视频在线看| 色综合久久综合网| 欧美一区二区二区| 日韩一级完整毛片| 欧美一区二区三区成人| 国产精品无人区| 亚洲第一福利一区| 福利电影一区二区三区| 91丨porny丨国产| 6080日韩午夜伦伦午夜伦| 国产精品久久久久久久午夜片| 亚洲成人av一区二区三区| 国产一二三精品| 欧美色网一区二区| 欧美激情在线一区二区| 日韩av高清在线观看| 9i在线看片成人免费| 精品成a人在线观看| 亚洲一区二区欧美日韩| www.爱久久.com| 精品国产91久久久久久久妲己| 亚洲国产cao| 91麻豆国产福利精品| 国产免费成人在线视频| 久99久精品视频免费观看| 欧美日韩精品一区二区三区四区| 丁香另类激情小说| 欧美国产一区在线| 亚洲欧美精品午睡沙发| 麻豆精品精品国产自在97香蕉| 国产a级毛片一区| 日韩小视频在线观看专区| 亚洲国产视频在线| 成人福利视频在线看| 精品久久国产97色综合| 日韩av一级片| 在线观看av一区| 亚洲精品日韩一| 99久久免费国产| 欧美激情在线看| 国内精品视频666| 欧美一区二区三区色| 亚洲成av人在线观看| 91视频一区二区| 国产精品热久久久久夜色精品三区| 国产自产高清不卡| 欧美一区二区三区免费| 蜜桃精品视频在线| 欧美不卡一区二区| 久久国产免费看| 日韩精品中文字幕在线不卡尤物| 男人的j进女人的j一区|