three实现三维材质玻璃折射的文字代码

代码语言:html

所属分类:三维

代码描述:three实现三维材质玻璃折射的文字代码

代码标签: three 三维 材质 玻璃 折射 文字 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  

  
  <link rel='stylesheet' href='https://fonts.googleapis.com/css2?family=Paytone+One&amp;display=swap'>
  
<style>
body {
	margin: 0;
	user-select: none;
}

body > canvas {
	position: fixed;
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;
	user-select: none;
}
</style>

  
  
</head>

<body translate="no">
<script  async type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/es-module-shims.1.6.3.js"></script>

<script type="importmap">
  {
    "imports": {      
      "three": "//repo.bfw.wiki/bfwrepo/js/module/three/build/168/three.module.js",
      "three/addons/": "//repo.bfw.wiki/bfwrepo/js/module/three/examples/164/jsm/"
    }
  }
</script>
      <script type="module">

import * as THREE from "three";
import { FontLoader } from "three/addons/loaders/FontLoader.js";
import { TextGeometry } from "three/addons/geometries/TextGeometry.js";
import { OrbitControls } from "three/addons/controls/OrbitControls.js";
import { easing } from "//repo.bfw.wiki/bfwrepo/js/module/maath.js";

const vertexShader = `varying vec3 worldNormal;
varying vec3 eyeVector;

void main() {
  vec4 worldPos = modelMatrix * vec4(position, 1.0);
  vec4 mvPosition = viewMatrix * worldPos;

  gl_Position = projectionMatrix * mvPosition;
  worldNormal = normalize(modelMatrix * vec4(normal, 0.0)).xyz;
  eyeVector =  normalize(worldPos.xyz - cameraPosition);
}
`;

const fragmentShader = `uniform float uIorR;
uniform float uIorY;
uniform float uIorG;
uniform float uIorC;
uniform float uIorB;
uniform float uIorP;

uniform float uSaturation;
uniform float uChromaticAberration;
uniform float uRefractPower;
uniform float uFresnelPower;
uniform float uShininess;
uniform float uDiffuseness;
uniform vec3 uLight;

uniform vec2 winResolution;
uniform sampler2D uTexture;

varying vec3 worldNormal;
varying vec3 eyeVector;

vec3 sat(vec3 rgb, float adjustment) {
  const vec3 W = vec3(0.2125, 0.7154, 0.0721);
  vec3 intensity = vec3(dot(rgb, W));
  return mix(intensity, rgb, adjustment);
}

float fresnel(vec3 eyeVector, vec3 worldNormal, float power) {
  float fresnelFactor = abs(dot(eyeVector, worldNormal));
  float inversefresnelFactor = 1.0 - fresnelFactor;
  
  return pow(inversefresnelFactor, power);
}

float specular(vec3 light, float shininess, float diffuseness) {
  vec3 normal = worldNormal;
  vec3 lightVector = normalize(-light);
  vec3 halfVector = normalize(eyeVector + lightVector);

  float NdotL = dot(normal, lightVector);
  float NdotH =  dot(normal, halfVector);
  float kDiffuse = max(0.0, NdotL);
  float NdotH2 = NdotH * NdotH;

  float kSpecular = pow(NdotH2, shininess);
  return  kSpecular + kDiffuse * diffuseness;
}

const int LOOP = 16;

void main() {
  float iorRatioRed = 1.0/uIorR;
  float iorRatioGreen = 1.0/uIorG;
  float iorRatioBlue = 1.0/uIorB;

  vec2 uv = gl_FragCoord.xy / winResolution.xy;
  vec3 normal = worldNormal;
  vec3 color = vec3(0.0);

  for ( int i = 0; i < LOOP; i ++ ) {
    float slide = float(i) / float(LOOP) * 0.1;

    vec3 refractVecR = refract(eyeVector, normal,(1.0/uIorR));
    vec3 refractVecY = refract(eyeVector, normal, (1.0/uIorY));
    vec3 refractVecG = refract(eyeVector, normal, (1.0/uIorG));
    vec3 refractVecC = refract(eyeVector, normal, (1.0/uIorC));
    vec3 refractVecB = refract(eyeVector, normal, (1.0/uIorB));
    vec3 refractVecP = refract(eyeVector, normal, (1.0/uIorP));

    float r = texture2D(uTexture, uv + refractVecR.xy * (uRefractPower + slide * 1.0) * uChromaticAberration).x * 0.5;

    float y = (texture2D(uTexture, uv + refractVecY.xy * (uRefractPower + slide * 1.0) * uChromaticAberration).x * 2.0 +
                texture2D(uTexture, uv + refractVecY.xy * (uRefractPower + slide * 1.0) * uChromaticAberration).y * 2.0 -
                texture2D(uTexture, uv + refractVecY.xy * (uRefractPower + slide * 1.0) * uChromaticAberration).z) / 6.0;

    float g = texture2D(uTexture, uv + refractVecG.xy * (uRefractPower + slide * 2.0) * uChromaticAberration).y * 0.5;

    float c = (texture2D(uTexture, uv + refractVecC.xy * (uRefractPower + slide * 2.5) * uChromaticAberration).y * 2.0 +
                texture2D(uTexture, uv + refractVecC.xy * (uRefractPower + slide * 2.5) * uChromaticAberration).z * 2.0 -
                texture2D(uTexture, uv + refractVecC.xy * (uRefractPower + slide * 2.5) * uChromaticAberration).x) / 6.0;
          
    float b = texture2D(uTexture, uv + refractVecB.xy * (uRefractPower + slide * 3.0) * uChromaticAberration).z * 0.5;

    float p = (texture2D(uTexture, uv + refractVecP.xy * (uRefractPower + slide * 1.0) * uChromaticAberration).z * 2.0 +
                texture2D(uTexture, uv + refractVecP.xy * (uRefractPower + slide * 1.0) * uChromaticAberration).x * 2.0 -
                texture2D(uTexture, uv + refractVecP.xy * (uRefractPower + slide * 1.0) * uChromaticAberration).y) / 6.0;

    float R = r + (2.0*p + 2.0*y - c)/3.0;
    float G = g + (2.0*y + 2.0*c - p)/3.0;
    float B = b + (2.0*c + 2.0*p - y)/3.0;

    color.r += R;
    color.g += G;
    color.b += B;

    color = sat(color, uSaturation);
  }

  // Divide by the number of layers to normalize colors (rgb values can be worth up to the value of LOOP)
  color /= float( LOOP );

  // Specular
  float specularLight = specular(uLight, uShininess, uDiffuseness);
  color += specularLight;

  // Fresnel
  float f = fresnel(eyeVector, normal, uFresnelPower);
  color.rgb += f * vec3(1.0);

  gl_FragColor = vec4(color, 1.0);
  #include <tonemapping_fragment>
  #include <colorspace_fragment>
}`;

class App {
	scene = new THREE.Scene();
	renderer = new THREE.WebGLRenderer({ antialias: false });
	coords = new THREE.Vector2(0, 0);
	camera = new THREE.PerspectiveCamera(
		70,
		window.innerWidth / window.innerHeight,
		0.01,
		1000
	);

	constructor() {
		this.init();
		this.setComponents();
	}

	init() {
		this.scene.background = 0xff0000;
		this.renderer.setAnimationLoop(this.animate.bind(this));
		this.handleResize();
		window.addEventListener("resize", this.handleResize.bind(this), false);
		document.body.appendChild(this.renderer.domElement);

		this.camera.position.z = 3;
		document.body.addEventListener(
			"mousemove",
			this.onDocumentMouseMove.bind(this),
			false
		);
	}

	onDocumentMouseMove(event) {
		this.setCoords(event.clientX, event.clientY);
	}
	setCoords(x, y) {
		if (this.timer) clearTimeout(this.timer);
		this.coords.set(
			(x / window.innerWidth) * 2 - 1,
			-(y / window.innerHeight) * 2 + 1
		);
		this.mouseMoved = true;

		this.timer = setTimeout(() => {
			this.mouseMoved = false;
		}, 100);
	}

	setComponents() {
		this.controls = new OrbitControls(this.camera, this.renderer.domElement);
		try {
			this.holder = new THREE.Group();
			const geo = new THREE.IcosahedronGeometry(0.5, 8);
			const mat = new THREE.MeshBasicMaterial({ color: 0xffffff });
			const ico = new THREE.Mesh(geo, mat);

			const w = 1000;
			for (let i = 0; i < w; i++) {
				const icot = ico.clone();
				icot.position.x = (i % 50) * 2.5 - 100;
				icot.position.y = Math.round(i / 25) * 2.5 - 50;
				icot.position.z = -40;
				icot.layers.set(1);
				this.holder.add(icot);
			}
			this.scene.add(this.holder);
		} catch (e) {
			console.log(e);
		}

		this.target = new THREE.WebGLRenderTarget(
			window.innerWidth * window.devicePixelRatio,
			window.innerHeight * window.devicePixelRatio,
			{
				minFilter: THREE.LinearFilter,
				magFilter: THREE.LinearFilter,
				type: THREE.HalfFloatType
			}
		);
		this.backTarget = new THREE.WebGLRenderTarget(
			window.innerWidth * window.devicePixelRatio,
			window.innerHeight * window.devicePixelRatio,
			{
				minFilter: THREE.LinearFilter,
				magFilter: THREE.LinearFilter,
				type: THREE.HalfFloatType
			}
		);

		const font = new FontLoader().parse(json);

		const textGeometry = new TextGeometry("Prisme.", {
			font,
			size: 0.5,
			height: 0.1,
			curveSegments: 12,
			bevelEnabled: true,
			bevelSize: 0.02,
			textAlign: "center",
			bevelThickness: 0.01,
			bevelOffset: 0,
			bevelSegments: 10
		});
		const material = new THREE.ShaderMaterial({
			vertexShader,
			fragmentShader,
			uniforms: {
				uTexture: {
					value: null
				},
				uIorR: { value: 1.15 },
				uIorY: { value: 1.16 },
				uIorG: { value: 1.18 },
				uIorC: { value: 1.22 },
				uIorB: { value: 1.22 },
				uIorP: { value: 1.22 },
				uRefractPower: {
					value: 0.2
				},
				uChromaticAberration: {
					value: 0.6
				},
				uSaturation: { value: 1.08 },
				uShininess: { value: 40.0 },
				uDiffuseness: { value: 0.2 },
				uFresnelPower: { value: 8.0 },
				uLight: {
					value: new THREE.Vector3(-1.0, 1.0, 1.0)
				},
				winResolution: {
					value: new THREE.Vector2(window.innerWidth, window.innerHeight)
				}
			}
		});
		textGeometry.computeVertexNormals();
		this.text = new THREE.Mesh(textGeometry, material);
		textGeometry.center();
		this.scene.add(this.text);
	}

	handleResize() {
		const { innerWidth: width, innerHeight: height } = window;
		const { camera, renderer } = this;
		camera.aspect = width / height;
		camera.updateProjectionMatrix();
		renderer.setSize(width, height);
		if (this.text) {
			console.log(this.text);
			this.text.material.uniforms.winResolution.value.set(
				window.innerWidth,
				window.innerHeight
			);
		}
	}

	animate(t) {
		const delta = t - parseFloat(this.pt);
		this.pt = t;

		// this damping approach is super interesting it comes from https://codesandbox.io/p/sandbox/4j2q2
		easing.damp3(
			this.text.position,
			[
				this.text.position.x,
				this.text.position.y,
				(1.0 - Math.cos(this.coords.x)) * 2.25
			],
			0.2,
			delta / 1000
		);
		easing.damp3(
			this.text.rotation,
			[
				this.coords.y * 3.14 * 0.0314 * 0.9,
				this.coords.x * 3.14 * 0.0314 * 1.4,
				0
			],
			0.2,
			delta / 1000
		);
		// console.log(this.text.rotation)
		this.holder.rotation.z += 0.001;
		this.camera.layers.disableAll();
		this.camera.layers.enable(1);
		this.text.visible = false;
		this.renderer.setRenderTarget(this.backTarget);
		this.renderer.render(this.scene, this.camera);

		this.camera.layers.enableAll();
		this.text.material.side = THREE.BackSide;
		this.text.material.uniforms.uTexture.value = this.backTarget.texture;
		this.text.visible = true;
		this.renderer.setRenderTarget(this.target);
		this.renderer.render(this.scene, this.camera);

		this.camera.layers.disable(1);
		this.text.material.uniforms.uTexture.value = this.target.texture;
		this.text.material.side = THREE.FrontSide;
		this.renderer.setRenderTarget(null);
		this.renderer.render(this.scene, this.camera);
	}
}

const json = {
	glyphs: {
		0: {
			ha: 1319,
			x_min: 68,
			x_max: 1251,
			o:
				"m 660 -28 q 224 117 381 -28 q 68 500 68 263 q 224 879 68 735 q 660 1024 381 1024 q 1094 878 938 1024 q 1251 500 1251 733 q 1094 118 1251 264 q 660 -28 938 -28 m 417 500 q 480 315 417 378 q 660 251 543 251 q 839 315 775 251 q 903 500 903 378 q 840 683 903 619 q 660 746 776 746 q 480 683 543 746 q 417 500 417 621 z "
		},
		1: {
			ha: 1125,
			x_min: 82,
			x_max: 1043,
			o:
				"m 82 0 l 82 250 l 399 250 l 399 733 l 150 657 l 82 896 l 432 997 l 725 997 l 725 250 l 1043 250 l 1043 0 l 82 0 z "
		},
		2: {
			ha: 1257,
			x_min: 82,
			x_max: 1175,
			o:
				"m 82 143 q 124 292 82 226 q 232 399 165 358 q 378 471 299 439 q 539 526 458 503 q 686 574 619 550 q 794 629 753 597 q 836 703 836 661 q 798 775 836 751 q 668 799 760 799 q 438 646 438 799 l 97 646 q 156 819 107 744 q 283 936 204 893 q 460 1000 363 979 q 676 1021 558 1021 q 1043 944 911 1021 q 1175 721 1175 868 q 1110 543 1175 617 q 947 431 1044 469 q 751 366 850 393 q 573 311 653 339 q 476 250 493 283 l 1161 250 l 1161 0 l 82 0 l 82 143 z "
		},
		3: {
			ha: 1267,
			x_min: 68,
			x_max: 1200,
			o:
				"m 654 -28 q 228 65 372 -28 q 68 351 85 158 l 394 351 q 458 242 394 276 q 651 208 521 208 q 813 234 763 208 q 864 319 864 260 q 818 399 864 375 q 668 422 772 422 l 582 422 l 582 604 l 660 604 q 804 628 758 606 q 850 703 850 651 q 802 776 850 754 q 644 799 754 799 q 453 763 513 799 q 394 646 394 726 l 82 646 q 671 1021 115 1021 q 1056 947 926 1021 q 1186 729 1186 872 q 1029 514 1186 574 q 1200 288 1200 453 q 654 -28 1200 -28 z "
		},
		4: {
			ha: 1344,
			x_min: 82,
			x_max: 1263,
			o:
				"m 767 0 l 767 158 l 82 158 l 82 393 l 767 997 l 1093 997 l 1093 393 l 1263 393 l 1263 158 l 1093 158 l 1093 0 l 767 0 m 415 393 l 767 393 l 767 715 l 415 393 z "
		},
		5: {
			ha: 1231,
			x_min: 67,
			x_max: 1164,
			o:
				"m 635 -28 q 235 63 392 -28 q 67 331 79 153 l 410 331 q 622 210 436 210 q 821 354 821 210 q 776 453 821 418 q 647 489 732 489 q 535 472 583 489 q 428 413 486 456 l 125 471 l 207 999 l 1083 999 l 1083 760 l 471 760 l 450 610 q 765 674 588 674 q 1059 588 954 674 q 1164 349 1164 503 q 1026 73 1164 174 q 635 -28 889 -28 z "
		},
		6: {
			ha: 1288,
			x_min: 81,
			x_max: 1210,
			o:
				"m 664 -28 q 238 108 394 -28 q 81 478 81 244 q 259 874 81 728 q 740 1021 438 1021 q 1126 990 940 1021 l 1126 754 q 771 782 944 782 q 446 608 515 782 q 765 678 590 678 q 1090 588 971 678 q 1210 344 1210 497 q 1062 73 1210 174 q 664 -28 914 -28 m 425 350 q 484 248 425 286 q 642 210 543 210 q 806 249 744 210 q 867 353 867 288 q 806 452 867 415 q 644 489 746 489 q 485 451 544 489 q 425 350 425 413 z "
		},
		7: {
			ha: 1193,
			x_min: 85,
			x_max: 1108,
			o:
				"m 299 0 q 756 750 299 490 l 85 750 l 85 997 l 1108 997 l 1108 750 q 737 410 849 588 q 625 0 625 232 l 299 0 z "
		},
		8: {
			ha: 1349,
			x_min: 82,
			x_max: 1265,
			o:
				"m 674 -28 q 387 -7 504 -28 q 203 56 269 14 q 110 150 138 97 q 82 274 82 203 q 356 524 82 465 q 165 756 165 586 q 296 952 165 883 q 674 1021 426 1021 q 1051 952 921 1021 q 1181 756 1181 883 q 990 524 1181 585 q 1265 274 1265 467 q 1237 150 1265 203 q 1143 56 1208 97 q 960 -6 1078 15 q 674 -28 842 -28 m 435 297 q 674 183 435 183 q 913 297 913 183 q 674 410 913 410 q 492 382 549 410 q 435 297 435 354 m 524 801 q 501 789 524 801 q 479 732 479 778 q 524 664 479 686 q 674 642 568 642 q 824 664 781 642 q 868 732 868 686 q 824 801 868 778 q 674 824 779 824 q 524 801 568 824 z "
		},
		9: {
			ha: 1288,
			x_min: 78,
			x_max: 1207,
			o:
				"m 624 1021 q 1050 885 893 1021 q 1207 515 1207 749 q 1028 119 1207 265 q 547 -28 850 -28 q 161 3 347 -28 l 161 239 q 517 211 343 211 q 842 385 772 211 q 522 315 697 315 q 197 406 317 315 q 78 649 78 496 q 226 920 78 819 q 624 1021 374 1021 m 421 640 q 481 541 421 578 q 643 504 542 504 q 803 542 743 504 q 863 643 863 581 q 803 745 863 707 q 646 783 744 783 q 482 744 543 783 q 421 640 421 706 z "
		},
		"­": {
			ha: 722,
			x_min: 135,
			x_max: 592,
			o:
				"m 592 1111 l 592 -333 l 135 -333 l 135 1111 l 592 1111 m 242 -233 l 481 -233 l 481 -186 l 333 -186 l 435 -118 l 481 -118 l 481 -71 l 242 -71 l 242 -118 l 342 -118 l 242 -186 l 242 -233 m 242 -37 l 481 -37 l 481 126 l 242 126 l 242 -37 m 242 213 l 481 213 l 481 376 l 336 376 l 336 294 l 386 294 l 386 328 l 433 328 l 433 260 l 289 260 l 289 376 l 242 376 l 242 213 m 242 408 l 481 408 l 481 553 l 433 553 l 433 457 l 242 457 l 242 408 m 242 490 l 386 490 l 386 592 l 481 592 l 481 639 l 242 639 l 242 592 l 336 592 l 336 538 l 242 538 l 242 490 m 242 678 l 481 678 l 481 726 l 386 726 l 386 828 l 242 828 l 242 678 m 242 865 l 481 865 l 481 914 l 386 914 l 386 967 l 481 967 l 481 1014 l 243 1014 l 243 967 l 336 967 l 336 914 l 242 914 l 242 865 m 289 11 l 289 78 l 433 78 l 433 11 l 289 11 m 289 726 l 289 779 l 336 779 l 336 726 l 289 726 z "
		},
		"²": {
			ha: 722,
			x_min: 135,
			x_max: 592,
			o:
				"m 592 1111 l 592 -333 l 135 -333 l 135 1111 l 592 1111 m 242 -233 l 481 -233 l 481 -186 l 333 -186 l 435 -118 l 481 -118 l 481 -71 l 242 -71 l 242 -118 l 342 -118 l 242 -186 l 242 -233 m 242 -37 l 481 -37 l 481 126 l 242 126 l 242 -37 m 242 213 l 481 213 l 481 376 l 336 376 l 336 294 l 386 294 l 386 328 l 433 328 l 433 260 l 289 260 l 289 376 l 242 376 l 242 213 m 242 408 l 481 408 l 481 553 l 433 553 l 433 457 l 242 457 l 242 408 m 242 490 l 386 490 l 386 592 l 481 592 l 481 639 l 242 639 l 242 592 l 336 592 l 336 538 l 242 538 l 242 490 m 242 678 l 481 678 l 481 726 l 386 726 l 386 828 l 242 828 l 242 678 m 242 865 l 481 865 l 481 914 l 386 914 l 386 967 l 481 967 l 481 1014 l 243 1014 l 243 967 l 336 967 l 336 914 l 242 914 l 242 865 m 289 11 l 289 78 l 433 78 l 433 11 l 289 11 m 289 726 l 289 779 l 336 779 l 336 726 l 289 726 z "
		},
		"³": {
			ha: 722,
			x_min: 135,
			x_max: 592,
			o:
				"m 592 1111 l 592 -333 l 135 -333 l 135 1111 l 592 1111 m 242 -233 l 481 -233 l 481 -186 l 333 -186 l 435 -118 l 481 -118 l 481 -71 l 242 -71 l 242 -118 l 342 -118 l 242 -186 l 242 -233 m 242 -37 l 481 -37 l 481 126 l 242 126 l 242 -37 m 242 213 l 481 213 l 481 376 l 336 376 l 336 294 l 386 294 l 386 328 l 433 328 l 433 260 l 289 260 l 289 376 l 242 376 l 242 213 m 242 408 l 481 408 l 481 553 l 433 553 l 433 457 l 242 457 l 242 408 m 242 490 l 386 490 l 386 592 l 481 592 l 481 639 l 242 639 l 242 592 l 336 592 l 336 538 l 242 538 l 242 490 m 242 678 l 481 678 l 481 726 l 386 726 l 386 828 l 242 828 l 242 678 m 242 865 l 481 865 l 481 914 l 386 914 l 386 967 l 481 967 l 481 1014 l 243 1014 l 243 967 l 336 967 l 336 914 l 242 914 l 242 865 m 289 11 l 289 78 l 433 78 l 433 11 l 289 11 m 289 726 l 289 779 l 336 779 l 336 726 l 289 726 z "
		},
		µ: {
			ha: 722,
			x_min: 135,
			x_max: 592,
			o:
				"m 592 1111 l 592 -333 l 135 -333 l 135 1111 l 592 1111 m 242 -233 l 481 -233 l 481 -186 l 333 -186 l 435 -118 l 481 -118 l 481 -71 l 242 -71 l 242 -118 l 342 -118 l 242 -186 l 242 -233 m 242 -37 l 481 -37 l 481 126 l 242 126 l 242 -37 m 242 213 l 481 213 l 481 376 l 336 376 l 336 294 l 386 294 l 386 328 l 433 328 l 433 260 l 289 260 l 289 376 l 242 376 l 242 213 m 242 408 l 481 408 l 481 553 l 433 553 l 433 457 l 242 457 l 242 408 m 242 490 l 386 490 l 386 592 l 481 592 l 481 639 l 242 639 l 242 592 l 336 592 l 336 538 l 242 538 l 242 490 m 242 678 l 481 678 l 481 726 l 386 726 l 386 828 l 242 828 l 242 678 m 242 865 l 481 865 l 481 914 l 386 914 l 386 967 l 481 967 l 481 1014 l 243 1014 l 243 967 l 336 967 l 336 914 l 242 914 l 242 865 m 289 11 l 289 78 l 433 78 l 433 11 l 289 11 m 289 726 l 289 779 l 336 779 l 336 726 l 289 726 z "
		},
		"¹": {
			ha: 722,
			x_min: 135,
			x_max: 592,
			o:
				"m 592 1111 l 592 -333 l 135 -333 l 135 1111 l 592 1111 m 242 -233 l 481 -233 l 481 -186 l 333 -186 l 435 -118 l 481 -118 l 481 -71 l 242 -71 l 242 -118 l 342 -118 l 242 -186 l 242 -233 m 242 -37 l 481 -37 l 481 126 l 242 126 l 242 -37 m 242 213 l 481 213 l 481 376 l 336 376 l 336 294 l 386 294 l 386 328 l 433 328 l 433 260 l 289 260 l 289 376 l 242 376 l 242 213 m 242 408 l 481 408 l 481 553 l 433 553 l 433 457 l 242 457 l 242 408 m 242 490 l 386 490 l 386 592 l 481 592 l 481 639 l 242 639 l 242 592 l 336 592 l 336 538 l 242 538 l 242 490 m 242 678 l 481 678 l 481 726 l 386 726 l 386 828 l 242 828 l 242 678 m 242 865 l 481 865 l 481 914 l 386 914 l 386 967 l 481 967 l 481 1014 l 243 1014 l 243 967 l 336 967 l 336 914 l 242 914 l 242 865 m 289 11 l 289 78 l 433 78 l 433 11 l 289 11 m 289 726 l 289 779 l 336 779 l 336 726 l 289 726 z "
		},
		º: {
			ha: 722,
			x_min: 135,
			x_max: 592,
			o:
				"m 592 1111 l 592 -333 l 135 -333 l 135 1111 l 592 1111 m 242 -233 l 481 -233 l 481 -186 l 333 -186 l 435 -118 l 481 -118 l 481 -71 l 242 -71 l 242 -118 l 342 -118 l 242 -186 l 242 -233 m 242 -37 l 481 -37 l 481 126 l 242 126 l 242 -37 m 242 213 l 481 213 l 481 376 l 336 376 l 336 294 l 386 294 l 386 328 l 433 328 l 433 260 l 289 260 l 289 376 l 242 376 l 242 213 m 242 408 l 481 408 l 481 553 l 433 553 l 433 457 l 242 457 l 242 408 m 242 490 l 386 490 l 386 592 l 481 592 l 481 639 l 242 639 l 242 592 l 336 592 l 336 538 l 242 538 l 242 490 m 242 678 l 481 678 l 481 726 l 386 726 l 386 828 l 242 828 l 242 678 m 242 865 l 481 865 l 481 914 l 386 914 l 386 967 l 481 967 l 481 1014 l 243 1014 l 243 967 l 336 967 l 336 914 l 242 914 l 242 865 m 289 11 l 289 78 l 433 78 l 433 11 l 289 11 m 289 726 l 289 779 l 336 779 l 336 726 l 289 726 z "
		},
		Ĩ: {
			ha: 722,
			x_min: 135,
			x_max: 592,
			o:
				"m 592 1111 l 592 -333 l 135 -333 l 135 1111 l 592 1111 m 242 -233 l 481 -233 l 481 -186 l 333 -186 l 435 -118 l 481 -118 l 481 -71 l 242 -71 l 242 -118 l 342 -118 l 242 -186 l 242 -233 m 242 -37 l 481 -37 l 481 126 l 242 126 l 242 -37 m 242 213 l 481 213 l 481 376 l 336 376 l 336 294 l 386 294 l 386 328 l 433 328 l 433 260 l 289 260 l 289 376 l 242 376 l 242 213 m 242 408 l 481 408 l 481 553 l 433 553 l 433 457 l 242 457 l 242 408 m 242 490 l 386 490 l 386 592 l 481 592 l 481 639 l 242 639 l 242 592 l 336 592 l 336 538 l 242 538 l 242 490 m 242 678 l 481 678 l 481 726 l 386 726 l 386 828 l 242 828 l 242 678 m 242 865 l 481 865 l 481 914 l 386 914 l 386 967 l 481 967 l 481 1014 l 243 1014 l 243 967 l 336 967 l 336 914 l 242 914 l 242 865 m 289 11 l 289 78 l 433 78 l 433 11 l 289 11 m 289 726 l 289 779 l 336 779 l 336 726 l 289 726 z "
		},
		ĩ: {
			ha: 722,
			x_min: 135,
			x_max: 592,
			o:
				"m 592 1111 l 592 -333 l 135 -333 l 135 1111 l 592 1111 m 242 -233 l 481 -233 l 481 -186 l 333 -186 l 435 -118 l 481 -118 l 481 -71 l 242 -71 l 242 -118 l 342 -118 l 242 -186 l 242 -233 m 242 -37 l 481 -37 l 481 126 l 242 126 l 242 -37 m 242 213 l 481 213 l 481 376 l 336 376 l 336 294 l 386 294 l 386 328 l 433 328 l 433 260 l 289 260 l 289 376 l 242 376 l 242 213 m 242 408 l 481 408 l 481 553 l 433 553 l 433 457 l 242 457 l 242 408 m 242 490 l 386 490 l 386 592 l 481 592 l 481 639 l 242 639 l 242 592 l 336 592 l 336 538 l 242 538 l 242 490 m 242 678 l 481 678 l 481 726 l 386 726 l 386 828 l 242 828 l 242 678 m 242 865 l 481 865 l 481 914 l 386 914 l 386 967 l 481 967 l 481 1014 l 243 1014 l 243 967 l 336 967 l 336 914 l 242 914 l 242 865 m 289 11 l 289 78 l 433 78 l 433 11 l 289 11 m 289 726 l 289 779 l 336 779 l 336 726 l 289 726 z "
		},
		Ĭ: {
			ha: 722,
			x_min: 135,
			x_max: 592,
			o:
				"m 592 1111 l 592 -333 l 135 -333 l 135 1111 l 592 1111 m 242 -233 l 481 -233 l 481 -186 l 333 -186 l 435 -118 l 481 -118 l 481 -71 l 242 -71 l 242 -118 l 342 -118 l 242 -186 l 242 -233 m 242 -37 l 481 -37 l 481 126 l 242 126 l 242 -37 m 242 213 l 481 213 l 481 376 l 336 376 l 336 294 l 386 294 l 386 328 l 433 328 l 433 260 l 289 260 l 289 376 l 242 376 l 242 213 m 242 408 l 481 408 l 481 553 l 433 553 l 433 457 l 242 457 l 242 408 m 242 490 l 386 490 l 386 592 l 481 592 l 481 639 l 242 639 l 242 592 l 336 592 l 336 538 l 242 538 l 242 490 m 242 678 l 481 678 l 481 726 l 386 726 l 386 828 l 242 828 l 242 678 m 242 865 l 481 865 l 481 914 l 386 914 l 386 967 l 481 967 l 481 1014 l 243 1014 l 243 967 l 336 967 l 336 914 l 242 914 l 242 865 m 289 11 l 289 78 l 433 78 l 433 11 l 289 11 m 289 726 l 289 779 l 336 779 l 336 726 l 289 726 z "
		},
		ĭ: {
			ha: 722,
			x_min: 135,
			x_max: 592,
			o:
				"m 592 1111 l 592 -333 l 135 -333 l 135 1111 l 592 1111 m 242 -233 l 481 -233 l 481 -186 l 333 -186 l 435 -118 l 481 -118 l 481 -71 l 242 -71 l 242 -118 l 342 -118 l 242 -186 l 242 -233 m 242 -37 l 481 -37 l 481 126 l 242 126 l 242 -37 m 242 213 l 481 213 l 481 376 l 336 376 l 336 294 l 386 294 l 386 328 l 433 328 l 433 260 l 289 260 l 289 376 l 242 376 l 242 213 m 242 408 l 481 408 l 481 553 l 433 553 l 433 457 l 242 457 l 242 408 m 242 490 l 386 490 l 386 592 l 481 592 l 481 639 l 242 639 l 242 592 l 336 592 l 336 538 l 242 538 l 242 490 m 242 678 l 481 678 l 481 726 l 386 726 l 386 828 l 242 828 l 242 678 m 242 865 l 481 865 l 481 914 l 386 914 l 386 967 l 481 967 l 481 1014 l 243 1014 l 243 967 l 336 967 l 336 914 l 242 914 l 242 865 m 289 11 l 289 78 l 433 78 l 433 11 l 289 11 m 289 726 l 289 779 l 336 779 l 336 726 l 289 726 z "
		},
		"̉": {
			ha: 722,
			x_min: 135,
			x_max: 592,
			o:
				"m 592 1111 l 592 -333 l 135 -333 l 135 1111 l 592 1111 m 242 -233 l 481 -233 l 481 -186 l 333 -186 l 435 -118 l 481 -118 l 481 -71 l 242 -71 l 242 -118 l 342 -118 l 242 -186 l 242 -233 m 242 -37 l 481 -37 l 481 126 l 242 126 l 242 -37 m 242 213 l 481 213 l 481 376 l 336 376 l 336 294 l 386 294 l 386 328 l 433 328 l 433 260 l 289 260 l 289 376 l 242 376 l 242 213 m 242 408 l 481 408 l 481 553 l 433 553 l 433 457 l 242 457 l 242 408 m 242 490 l 386 490 l 386 592 l 481 592 l 481 639 l 242 639 l 242 592 l 336 592 l 336 538 l 242 538 l 242 490 m 242 678 l 481 678 l 481 726 l 386 726 l 386 828 l 242 828 l 242 678 m 242 865 l 481 865 l 481 914 l 386 914 l 386 967 l 481 967 l 481 1014 l 243 1014 l 243 967 l 336 967 l 336 914 l 242 914 l 242 865 m 289 11 l 289 78 l 433 78 l 433 11 l 289 11 m 289 726 l 289 779 l 336 779 l 336 726 l 289 726 z "
		},
		"―": {
			ha: 722,
			x_min: 135,
			x_max: 592,
			o:
				"m 592 1111 l 592 -333 l 135 -333 l 135 1111 l 592 1111 m 242 -233 l 481 -233 l 481 -186 l 333 -186 l 435 -118 l 481 -118 l 481 -71 l 242 -71 l 242 -118 l 342 -118 l 242 -186 l 242 -233 m 242 -37 l 481 -37 l 481 126 l 242 126 l 242 -37 m 242 213 l 481 213 l 481 376 l 336 376 l 336 294 l 386 294 l 386 328 l 433 328 l 433 260 l 289 260 l 289 376 l 242 376 l 242 213 m 242 408 l 481 408 l 481 553 l 433 553 l 433 457 l 242 457 l 242 408 m 242 490 l 386 490 l 386 592 l 481 592 l 481 639 l 242 639 l 242 592 l 336 592 l 336 538 l 242 538 l 242 490 m 242 678 l 481 678 l 481 726 l 386 726 l 386 828 l 242 828 l 242 678 m 242 865 l 481 865 l 481 914 l 386 914 l 386 967 l 481 967 l 481 1014 l 243 1014 l 243 967 l 336 967 l 336 914 l 242 914 l 242 865 m 289 11 l 289 78 l 433 78 l 433 11 l 289 11 m 289 726 l 289 779 l 336 779 l 336 726 l 289 726 z "
		},
		"‖": {
			ha: 722,
			x_min: 135,
			x_max: 592,
			o:
				"m 592 1111 l 592 -333 l 135 -333 l 135 1111 l 592 1111 m 242 -233 l 481 -233 l 481 -186 l 333 -186 l 435 -118 l 481 -118 l 481 -71 l 242 -71 l 242 -118 l 342 -118 l 242 -186 l 242 -233 m 242 -.........完整代码请登录后点击上方下载按钮下载查看

网友评论0