public TempTextLineCopyContext(TextLineBox textline, out Typography.Text.TextBufferSpan buffSpan) { _tempStBuilder = StringBuilderPool <StringBuilderPoolOwner> .GetFreeStringBuilder(); textline.CopyLineContent(_tempStBuilder); int len = _tempStBuilder.Length; char[] charBuffer = new char[len]; _tempStBuilder.CopyTo(0, charBuffer, 0, len); buffSpan = new Typography.Text.TextBufferSpan(charBuffer); }
Size MeasureCopyRunLength(CopyRun copyRun) { //IAdvanceTextService txServices = GlobalTextService.AdvanceTextService; char[] mybuffer = copyRun.RawContent; //if (txServices.SupportsWordBreak) //{ var textBufferSpan = new Typography.Text.TextBufferSpan(mybuffer); _lineSegs.Clear(); _wordVisitor.SetLineSegmentList(_lineSegs); Typography.Text.GlobalTextService.TxtClient.BreakToLineSegments(textBufferSpan, _wordVisitor); var result = new TextSpanMeasureResult(); result.outputXAdvances = new int[mybuffer.Length]; Typography.Text.GlobalTextService.TxtClient.CalculateUserCharGlyphAdvancePos(textBufferSpan, _lineSegs, DefaultRunStyle.ReqFont, ref result); return(new Size(result.outputTotalW, result.lineHeight)); //} //else //{ // var textBufferSpan = new Typography.Text.TextBufferSpan(mybuffer); // var result = new TextSpanMeasureResult(); // result.outputXAdvances = new int[mybuffer.Length]; // txServices.CalculateUserCharGlyphAdvancePos(textBufferSpan, // DefaultRunStyle.ReqFont, // ref result); // return new Size(result.outputTotalW, result.lineHeight); //} }